1.关于递归与迭代

递归的性能低但是代码直观,改成迭代后子结构不变

二叉树的迭代实现?

2.动态规划

关于最大值最小值这种最值问题,一般都可以通过动态规划的方法进行判断,某些存在性问题也可以用动态规划的方法进行计算

https://leetcode.com/problems/word-break/

3.初始化数字为最大值时,可以为INT_MAX,但是记住,INT_MAX+1后为负数!!

https://leetcode.com/submissions/detail/188276800/

4.易错:

for(;;)中,如果两个分号之间的判断条件有多个,用逻辑运算符号&&与||连接,切记不要用逗号!

https://leetcode.com/submissions/detail/188428764/

5.关于超时

某些 要求打印所有可行解的题目,需要先用DP判断有没有可行解,有可行解再用DFS打印,否则可能会超时

https://leetcode.com/problems/word-break-ii/discuss/44185/Getting-rid-of-TLE

6. 关于快速排序

如果pivot是第一个数字,为什么要先从后往前找小的呢?因为会出现这种情况,比如

1,4,2,3

如果先从前往后找大的,那么最后返回的pivot是4和1交换,快速排序要求对于返回的pivot,pivot左边的数要么没有要么比pivot小,右边的数要么没有要么比pivot大

具体可见为什么一定要从右边开始

希望这个易错点我能够记得时间长点吧。。。

7.关于c++ string.substr()

string substr (size_t pos = 0, size_t len = npos) const;

如果pos的值和字符串的长度相等,返回一个空字符串

如果pos的值比字符串的长度大,抛出异常

8.关于字符串与数字互相转化

有一个巨坑,就是字符串如果太长了是无法直接转化为数字的。。。。比如一个长度为1000的字符串咋转换为数字。。

9.两个长度相同的字符串的比较

两个长度相同的字符串时可以直接进行比较的,这是c++的语言特性,比如"abb" < "abc"(按照字典序)

10.leetcode236 公共祖先,这题的思路就是本节点找不到就找两个儿子,通过两个儿子的结果来判断。。。。

11.反转链表是可以不new新node的

12.链表的排序,单向链表用归并排序,双向链表用快速排序

13.满二叉树:除了最后一层节点没有任何子节点以外,其他的节点均有两个子节点;完全二叉树:对于深度为K,有n个节点的二叉树,当且仅当每一个节点斗鱼深度为 K 的二叉树中编号为1~n的节点一一对应时,称为完全二叉树。

可以用树的层序遍历判断是不是完全二叉树;

14.快慢指针的问题

第一次相遇时,设相遇点到环入口的逆时针长度为R1,无环部分长度为L

有  2(L+R1) = L + nC, C为圆环周长

即L = nC-R1,即如果再找一个指针放在入口,慢指针放在快慢指针相遇处,那么之后一定相遇在入口处。

这题建议多看几遍,因为需要先判断能不能相遇。。

15 顺时针打印数组,这题易错,因为会出现横着把数组打印一遍然后从后到前又把数组打印一遍,或者竖着把数组打印一遍,之后又竖着从下往上把数组打印一遍的情况。

16 正则表达式,这题是我觉得最容易错的一题啦,因为空字符串也是能被匹配的。。

https://leetcode.com/problems/regular-expression-matching/

17 0-1背包是逆序:因为状态转移方程如下,很简单:

dp[i][j] = max(dp[i-1][j-weight[i]]+value[i], dp[i-1][j])

完全背包是顺序,因为状态转移方程如下

dp[i][j] = max{ dp[i-1][j-k*weight[i]]+k*value[i]}, 0 <= k*weight[i] <= j

这个状态转移方程可以转换为下面所示:

dp[i][j] = max(dp[i][j-weight[i]]+value[i], dp[i-1][j])

18  unsigned int的相反数:

sum = INT_MAX, -SUM = INT_MAX + 2的32次方

19 空树是二叉平衡树

20 硬币问题,自然数拆解问题:

硬币问题:网上各大公司经常出题目:假设现在有1元、2元、5元的纸币很多张,现在需要20块钱,你能给多少种找钱方案,这就可以认为是完全背包问题,即背包容量为20,物品体积分别为1、2、5。

自然数拆解问题:给定一个数m,将m拆成不同的自然数的和的形式有多少种方案,这就是典型的01背包问题,背包容量为m,物品件数为k,这里面的k是隐含条件,可以求出来,因为m最多由1+2+…+k得到,由此可以根据m求得物品件数的上限

01背包的状态转移公式:

dp[i][j] = dp[i-1][j], j < nums[i];
dp[i][j] = dp[i-1][j](不装) + dp[i-1][j-nums[i]](装)

完全背包的状态转移公式:

dp[i][j] = dp[i-1][j], nums[i] > j;
dp[i][j] = dp[i-1][j] + dp[i-1][j-nums[i]]+dp[i-1][j-2*nums[i]]+....+dp[i-1][j-k*nums[i]],(nums[i] <= j < (k+1)*nums[i])

其中,nums[i] >=j时的递推公式可以优化为

dp[i][j] = dp[i-1][j], j < nums[i]
dp[i][j] = dp[i-1][j] + dp[i][j-nums[i]], j >= nums[i]

21 大数相乘问题,注意最后一位的进位。。

22.动态规划中的博弈问题,一般来说,都是令dp[i]表示先手必胜,那么,dp[i] = !dp[i-1] || !dp[i-2] || .. dp[i-k].... 即

dp[i] = !(dp[i-1] && dp[i-2] && .... && dp[i-j])

23.摩尔投票算法,最重要的是continue,每一个都有continue.....

leetcode刷题总结(持续更新)相关推荐

  1. 个人LeetCode刷题记录(带题目链接及解答)持续更新

    Leetcode 刷题 注:~[完成]代表还有一些方法没看,最后再看 一.一些需要重刷的典型题: 1.快速排序,归并排序,堆排序(递归的思想) 2.链表中的回文链表,其中的快慢指针,多看,多练 3.链 ...

  2. GitHub标星90K,这份持续霸榜的Leetcode刷题手册到底有多强?

    写在前面 最近一个读者和我反馈,他坚持刷题2个月,终于去了他梦寐以求的大厂,薪资涨幅非常可观,期间面字节跳动还遇到了原题...并表示目前国内的大厂和一些独角兽,已经越来越效仿硅谷公司的做法,通过面试给 ...

  3. LeetCode刷题(十)----数组-----medium部分(Java、C++)

    LeetCode刷题(十)-----数组-------medium部分(Java.C++) 238. 除自身以外数组的乘积 给定长度为n的整数数组nums,其中n>1,返回输出数组output, ...

  4. LeetCode刷题模板(1):《我要打10个》之二分法

    Author       :  叨陪鲤 Email         : vip_13031075266@163.com Date          : 2021.01.23 Copyright : 未 ...

  5. c语言贪心算法合并箭,LeetCode刷题题库:贪心算法

    LeetCode刷题笔记:贪心算法 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...

  6. LeetCode刷题:滑动窗口模板以及典型例题

    作者:fuxuemingzhu 链接:https://leetcode-cn.com/problems/max-consecutive-ones-iii/solution/fen-xiang-hua- ...

  7. leetcode刷题方法

    leetcode刷题方法 一.范围内的200题 二.刷题步骤 三.算法思路 四.更新 1.12日留 此文章借鉴 陈同学在搬砖 微信公众号的一篇文章: https://mp.weixin.qq.com/ ...

  8. LeetCode刷题笔记2——数组2

    LeetCode刷题笔记2--数组2 重塑数组 题目 在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原 ...

  9. leetcode刷题日记(一)—— 数组

    因为暑期实习找得很不顺利,感觉自身最大的问题体现在刷题量偏少,操作系统,数据库基础不好,所以现在决定写博客来记录整个过程,希望能找到大厂offer,如果不能找到的话也算是为秋招做准备. 剑指offer ...

  10. ​LeetCode刷题实战450:删除二叉搜索树中的节点

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

最新文章

  1. NOIp2018 Mission Failed Level F
  2. 菜鸟学SQL注入 --- 一个简单的教学案例
  3. 分数化小数 Fractions to Decimals
  4. Nginx 模块开发
  5. mysql 5.5 压力测试,mysql 压力测试
  6. Redmi K50 Pro未发先火 卢伟冰:压力好大
  7. mysql卸载rpm包_mysql彻底卸载(rpm安装包)
  8. error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)[转]
  9. 使用Java进行RS232C端口的开发
  10. 服务器安全,服务器密码遭篡改
  11. KEIL MDK中 warning: #223-D: function “xxx“ declared implicitly 解决方法
  12. C++算法之化繁为简的分治法
  13. android黑色背景图片,android显示PNG图片背景黑色问题 ImageView PNG 背景黑色
  14. smart210 dnw下载
  15. Oracle EBS 寄销/VMI(1)--基础设置;寄销/VMI(2)--采购篇
  16. python建筑案例_有哪些关于 Python 在建筑中的应用和教程?
  17. 金融量化数据接口API汇总
  18. Tableau权限设置
  19. 运维(32) Prometheus+Grafana监控SpringBoot
  20. 【俞吾金】哲学的“世界”概念

热门文章

  1. .NET新手系列(六)
  2. pip安装包时遇到的Bug
  3. grafana绘制动态dashboard
  4. ulimit调优|设置普通用户的ulimit值
  5. 怎样解决WampServer #1405 - Access denied for user #39;root#39;@#39;localhost#39; (using password: NO...
  6. JavaScript 数据去重的常用几种方法
  7. 解决×××无法上网的心得
  8. 无法通过windows installer服务安装此安装程序包。您必须安装带有更新版本windows Installer服务的Windows
  9. mysql top 语句简介
  10. docker-compose command 执行多条指令