leetcode刷题总结251-300
251-256.。
257. 二叉树的所有路径
描述:
思路:递归(几乎所有的树的遍历等操作都可以用递归)
258. 各位相加
描述:
输入: 38
输出: 2
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
思路:按照思路
259.。。。。
260. 只出现一次的数字 III
描述:
思路:所有数字位异或的操作。然后得出那两个只出现一次的数字的异或。找到结果为0 的位,然后按照位为0,1分组。再次异或。
261.262.。。。
263. 丑数
描述:
思路:不断除以2,3,5.先判断余数是否为0再进行除。
264. 丑数 II
描述:
思路:三个指针。分别为2.3.5.从1开始,当某个指针乘以当前这个数字最小的时候,在丑数列表后添加,同时这个指针往后移一位。
265.266.。。。
268. 缺失数字
描述:
思路:位异或。
269.270.271.272.。。
273. 整数转换英文表示
描述:
思路:分治。从右往左按3位进行分。
274. H 指数
描述:
思路:排序。从左往右开始判断。
275. H指数 II
描述:
思路:二分查找。
276.277.。。
278. 第一个错误的版本
思路:二分。
279. 完全平方数
描述:
思路:动态规划。dp[i]=min(dp[i],dp[i-j*j]+1)j从1,2,3.。。
280.281.。。
282. 给表达式添加运算符
描述:
思路:回溯。遇到*的话需要进行特殊处理。
283. 移动零
描述:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
思路:双指针。。
284. 顶端迭代器
描述;
思路:在构造方法中构建linkedlist.调用linkedlist方法完成。;
285.286.。。
287. 寻找重复数
描述:
给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。
输入: [1,3,4,2,2]
输出: 2
思路:求出中点mid,然后遍历整个数组,统计所有小于等于mid的数的个数,如果个数大于mid,则说明重复值在[mid+1, n]之间,反之,重复值应在[1, mid-1]之间,然后依次类推,直到搜索完成,此时的low就是我们要求的重复值。
288.。。。
289. 生命游戏
思路:
思路:按照题目描述,将不同状态改为不同的数字。按照数字和0或1进行判断修改。
290. 单词规律
描述:
输入: pattern = "abba", str = "dog cat cat dog"
输出: true
思路:hash
292. Nim 游戏
描述:
思路:通过演练找规律。当为4 8 12 16 .。。。必输。
295. 数据流的中位数
描述:
思路:中位数关注的是第k小的数字。或者是第k,k+1.那么我们需要维护两个堆。一个大顶堆。用于维护前k小的数字。一个小顶堆,维护后k....的数字。同时还要保持这两个堆之间的输入流动。当来一个数字的时候,我们需要将其压入大顶堆,然后将大顶堆弹出一个元素入小顶堆。当此时为奇数,我们需要将小顶堆的弹出压入大顶堆。
297. 二叉树的序列化与反序列化
思路:DNF,BFS
299. 猜数字游戏
描述:
输入: secret = "1807", guess = "7810"
输出: "1A3B"
解释: 1 公牛和 3 奶牛。公牛是 8,奶牛是 0, 1 和 7。
思路:先按照下标对比求出A.然后通过hash求B
300. 最长上升子序列
描述:
输入: [10,9,2,5,3,7,101,18]
输出: 4
解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。
思路;动态规划。dp[i]决定于当前的最长上升子序列的从头开始到当前数字的长度。然后从头找到i,只要比nums[i]小,就进行一次max.