简单题:
1.两数之和 暴力遍历解决
7.整数反转 利用求商和求余解决
9.回文数 反转看一不一样,利用求商和求余解决
13.罗马数字转整数 遍历一遍,考虑特殊情况即可
14.最长公共前缀 先找到最短单词长度,然后对每个单词进行遍历
20.有效的括号 利用堆栈求解
21.合并两个有序链表 建立空头指针,然后开始在后面续两个里面较小的,直到有一个结束了,把省的那个直接续在后面
26.删除排序数组重复项 两种方法,一种STL直接利用vector的erase求解,这里注意删的时候end也要变,另一种双指针法(注意快指针一般是那个每次加1的那个,慢指针是特殊情况加1的)
27.移除元素 也是要么STL,要么双指针
28.实现 strStr() BF算法简单粗暴解决 或者用STL string.find()来 其他的一些字符串匹配算法有点难,没有必要 比如 BM算法 KMP算法
29.搜索插入位置 这种搜索排序数组想都不用想,上来就是二分法 O(logn)解决问题
53.最大子序和 这种求最XX序列,之类问题的明显动态规划解决
58.最后一个单词的长度 没什么技巧,就是遍历吧
66.加一 遍历、进位,考虑特殊情况
67.二进制求和 也是进位、考虑特殊情况
69.x的平方根 典型二分法
70.爬楼梯 迭代求解或者动态规划,这题典型迭代法求解
83.删除排序链表中的重复元素 快慢指针法,这种链表、删除连续的这些的,都直接快慢指针完事了
88.合并两个有序数组 这个是在原数组合并,考虑就是选取合适位置,移动后面元素,但是太麻烦,所以考虑倒着插入,就不可能把后面的元素挤掉
100.相同的树 树的解法考虑递归,输入两个结点,迭代判断子树是否相同
101.对称二叉树 递归求解,判断左子树是否等于右子树,这个时候要考虑输入,如果想尾递归就得输入两个结点,分别指向左右子树
102.二叉树的最大深度 尾递归求解即可
107.二叉树的层次遍历II 这题是我再看的时候不会的题,思路是用到队列,想想有道理,深度优先是堆栈,广度优先是队列
108.将有序数组转二叉搜索树 思路是二分法
110.平衡二叉树 先写如何求树高,然后循环判断
111.二叉树的最小深度 递归求每个深度,然后找最小值
112.路径求和 递归求和,然后找是否有满足条件的和
118.杨辉三角 动态规划求解即可,找到合理的状态和递推关系
119.杨辉三角II 动态规划,保存结果
121.买卖股票的最佳时机 经典股票问题 这个买一股的直接找最大最小值即可,遍历一次
122.买卖股票的最佳时机II 买无数次,贪心算法求解即可
123.验证回文串 考虑两个办法,一个双指针,另一个反转判断是否相同,还要先预处理掉标点和空格
136.只出现一次的数字 这个里面是数字,比较好的方法是位运算,记住a和0异或为a,a和a异或为0,当然可以用哈希表之类的来做
141.环形链表 暴力法就哈希表,还有就是双指针法,因为如果存在环,那么两个速度不同的指针一定会相遇,那么如果快指针指向NULL,就没有环,或者两者相遇,那就有环
160.相交链表 双指针法,类似于环形链表
167.两数之和II-输入有序数组 关键在于有序,那么就可以双指针,一个一头,加和大了就右端往左移,否则就左端往右移
168.Excel表名称 求余数和商的问题
172.阶乘后的零 每次找5,并且和含因子5的数字,所以每次都除以5,得到的结果继续除以5,直到无法整除,然后每次的结果加起来就是答案
189.旋转数组 模拟旋转 或者三次反转
190.颠倒二进制位 用一个二进制数保存结果,然后每次左移加上原来的右移
191.位1的个数 每次和1&,然后右移,如果是1就加1
198.打家劫舍 动态规划问题
202.快乐数 用set判断是否循环,然后每次都求解看看会不会回到1,还有一种方法是快慢指针判断循环,如果是1导致的循环就是快乐数,否则不是
203.移除链表元素 快慢指针求解,快指针正常走,慢指针满足条件才走
leetcode算法题目汇总
最新推荐文章于 2024-09-24 22:40:27 发布