LeetCode解题思路总结记录·更

LeetCode解题思路总结记录

简单:
1、两数之和 : 循环嵌套 ok
2、有效的括号 :map容器、pair、char??
3、合并两个有序链表:nullptr–空指针 val? next?
4、最大子序和:暴力法思路较为简单
5、爬楼梯 : 本质 解裴波拉切术 递归法计算量太大 用非递归法
6、对称二叉树 : 递归法 两个指针同步移动
7、二叉树的最大深度: 最大深度=左、右子树的最大深度+1 d=max(dl,dr)+1
8、买卖股票最佳时机:暴力法超时 采用非递归的线性时间方法 profits容器
9、只出现一次的数字:按位异或 ^
10、环形链表 判断是否有环:建立哈希表 调用查找功能
11、最小栈 :建立辅助栈 辅助栈存最小值
12、相交链表找起始节点:两个链表合二为一 挨着查询地址
13、多数元素:排序后找中间元素! ok
14、反转链表:迭代法和递归法
15、翻转二叉树 :迭代法 同14思路一致
16、回文链表 :1、复制链表到数组中 2、双指针判断
17、移动零 双指针交换遍历
18、找到所有数组中消失的数字 :遇到一个数 加n 最后找小于n的数
19、汉明距离:求异或值为1的个数
20、二叉树的直径 :准换为 球路径经过节点数最大值-1
21、合并二叉树 :深度优先搜索 1、判断为不为空 2、合并

中等:
1、盛水最多的容器:双指针 比较大小 小的移动
2、三数之和:排序后 固定第一个数 利用双指针找第二三个数
3、电话号码字母组合:哈希表 构造函数??
4、删除链表的倒数第N个节点 :快慢指针 双指针!?
5、括号生成:三种方法 暴力 回溯 递归!??
6、下一个排列 : 两遍扫描 难懂??
7、旋转排序数组 :二分查找法 用mid割分出两个部分
8、在排序树组中查找元素的第一个和最后一个位置: 二分查找 思路同7
9、组合总和: 搜索回溯?剪支?
10、全排列:递归法 调用 backtrack
11、旋转图像 :矩阵换位置[i][j]变为[j][n-i-1]
12、字母异位词分组:将互为字母异位词排序后相同,排序后字符串作为hash的键??
13、跳跃游戏: 贪心法 i+nums[i]为最远更新位置
14、合并区间:排序法?
15、不同路径 : 动态规划问题 f[m][n]=f[m][n-1]+f[m-1][n]
16、最小路径和:同15 动态规划
17、颜色分类:直接sort排序升序;双指针法 0就移到左边 2就移到右边
18、子集:组合思想的 回溯??
19、单词搜索 : 深度优先搜索?? 不懂!

45、寻找重复数: 排序之后 输出异或为0 的两个相邻的数值 却不可行??快慢指针 可作参考 「Floyd 判圈算法」(又称龟兔赛跑算法)
46、最长递增子序列 : 动态规划法 dp[n,0]
47、最佳买卖股票实际含冷冻期 : 动态规划思想
48、零钱兑换:动态规划下的 递归思想

笔记:
1、for(类型名 类型 : 需要遍历的数组) for(int i : arry)遍历数组
2、哈希表 unordered_set/unordered_map
3、三目运算 表达式1 ? 表达式2 :表达式3
如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
如果表达式1的值为假,执行表达式3,并返回表达式3的结果。
c = a > b ? a : b; //c被赋值
4、INT_MAX为整型上限 最大整数 是个特定值
5、异或 ^=
6、emplace_back用法:
push_back函数往容器中增加新元素时,必须要有一个该对象的实例才行,而emplace_back可以不用,它可以直接传入对象的构造函数参数直接进行构造,减少一次拷贝和赋值操作。
7、回文链表指的是整个链表关于中间值对称 {1,2,3,4,3,2,1}
8、auto要求编译器自动推导 auto num:nums

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值