算法思想

第一章 算法性能分析

1.时间复杂度分析

  • 时间复杂度是一个函数,它定性描述该算法的运行时间。
  • 大O用来表示上界的,当用它作为算法的最坏情况运行时间的上界,就是对任意数据输入的运行时间的上界
  • 输入数据的形式对程序运算时间是有很大影响的,在数据本来有序的情况下时间复杂度是O(n),但如果数据是逆序的话,插入排序的时间复杂度就是O(n^2)。也就有了最坏时间复杂度的概念,如果输入的数据是逆序,自然排序的时间就会长。就要时刻想着数据用例的不一样,时间复杂度也是不同的
  • 在决定使用哪些算法的时候,不是时间复杂越低的越好(因为简化后的时间复杂度忽略了常数项等等),要考虑数据规模,如果数据规模很小甚至可以用O(n^2)的算法比O(n)的更合适
  • 时间复杂度都是省略常数项系数的,是因为一般情况下都是默认数据规模足够的大,基于这样的事实,给出的算法时间复杂的的一个排行:O(1)常数阶 < O(logn)对数阶 < O(n)线性阶 < O(n^2)平方阶 < O(n^3)(立方阶) < O(2^n) (指数阶)
  • O(logn)中的log:抽出来以2为底的10是常数,所以还是一律叫做logn

2.空间复杂度分析

  • 空间复杂度是对一个算法在运行过程中占用内存空间大小的量度,记做S(n)=O(f(n)。可以对程序运行中需要多少内存有个预先估计。
  • 求其空间复杂度公式:递归算法的空间复杂度 = 每次递归的空间复杂度 * 递归深度

第二章 双指针

1. 两数之和 II - 输入有序数组

找到数组中两数和为目标值的数,返回计数位置
双指针单向双层逐个遍历:

刷题学习—算法思想(双指针、排序、回溯、二分法、滑动窗口、贪心、单调栈)相关推荐

  1. 刷题学习—算法思想(动态规划下)

    24.买卖股票的最佳时机系列 24.1买卖股票的最佳时机 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票.设计一个算法来计算你所能获取的最大利润. 只能一笔交易 cla ...

  2. 力扣刷题学习SQL篇——1-8 查询(按日期分组销售产品——利用聚合函数GROUP_CONCAT)

    力扣刷题学习SQL篇--1-8 查询(按日期分组销售产品--利用聚合函数GROUP_CONCAT) 1.题目 2.解法 3.group_concat() 1.题目 题目链接:https://leetc ...

  3. 手机号正则_一起刷题学习正则表达式

    在我最开始学习正则表达式的时候看到一堆符号简直头晕,所以很长一段时间我都是百度一下某某正则怎么写,比如:匹配所有手机号码的正则,但是有时候工作中碰到的一些问题网上搜不到,这就尴尬了,后面还是逼着自己花 ...

  4. 从零开始学习VIO笔记 --- 第四讲:滑动窗口(基于滑动窗口算法的 VIO 系统:可观性和一致性)

    从零开始学习VIO笔记 --- 第四讲:滑动窗口(基于滑动窗口算法的 VIO 系统:可观性和一致性) 一. 从高斯分布到信息矩阵 1.1 高斯分布 1.2 高斯分布和协方差矩阵 1.3 信息矩阵 二. ...

  5. 堆排序时间复杂度_leetcode刷题(二):排序算法(归并排序,堆排序,桶排序)...

    今天,我们要来讲讲排序问题,这次讲的排序算法主要是归并排序,堆排序和桶排序. 归并排序 归并一词在中文的含义就是"合并,并入"的意思,在数据结构里面就是将两个或者两个以上的有序数组 ...

  6. 算法入门刷题笔记 Day10 - A - 拓扑排序·一 -- D - K-th Path

    写在前面 好久没更新公众号和博客了,因为最近在研究新的方向,所以很少发文. 笔者接触编程只有一年,这一年间主要研究启发式算法在运筹学中的应用.但是由于编程基础薄弱,在进一步研究复杂运筹学问题时发现基础 ...

  7. C#LeetCode刷题-分治算法

    分治算法篇 # 题名 刷题 通过率 难度 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)-该题未达最优解 30 ...

  8. list元素求和_LeetCode刷题实战82:删除排序链表中的重复元素 II

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  9. 各大编程语言、软件,电子电路刷题学习网站链接及微信公众号

    20210813 增加一些公众号 一些对程序员有用的网站 https://mp.weixin.qq.com/s/GiEbcBSReaKrVezjGA9_fA 20210715:公众号:拓跋啊秀 资源: ...

最新文章

  1. 强化学习在携程酒店推荐排序中的应用探索
  2. ChipScope Pro分析仪
  3. java - 策略模式、状态模式、卫语句,避免多重if-else(转)
  4. 一、MySql优化的基础介绍
  5. Java基础-重写方法
  6. 尽量使用覆盖索引,避免select * || 用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到|| 如果MySQL评估使用索引比全表更慢,则不使用索引
  7. NHibernate简介
  8. zabbix3.2.4监控MySQL5.7.16状态
  9. java constant 类_如何从Constant java为注释提供值
  10. DDD理论学习系列(4)-- 领域模型
  11. 如何把朋友升级成情侣?| 今日最佳
  12. C# 页面关联类似模式窗口
  13. leetcode 贪心_利用贪心算法解LeetCode第1253题:重构2行二进制矩阵
  14. css3鼠标悬停图片抖动效果
  15. 高效办公,从几行批处理命令开始 | 原力计划
  16. fasterrcnn论文_论文笔记:Fast(er) RCNN
  17. 学计算机导论的感悟,学习《计算机导论》后的感想
  18. Font shape `TU/ptm/m/n' undefined(Font) using `TU/lmr/m/n' instead
  19. Minecraft一些红石技巧(1)
  20. STM32寄存器配置USART1串口及USART->BRR值的计算

热门文章

  1. Spring定时任务写法
  2. MySQL数据库软件介绍
  3. 7 款开源 Java 反编译工具
  4. STP协议 与 STP树的生成
  5. Linux 创建用户和添加操作权限
  6. 禁用键盘快捷键_如何在Windows中使用键盘快捷键临时禁用键盘
  7. Python 常用基础模块(二):os模块
  8. 33、HTML高频前端面试题
  9. 倍福--步进电机的控制
  10. 6-4 计算圆柱体的表面积(函数名隐藏)