Susiewest / AlgorithmPractice

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AlgorithmPractice

逆序对 最小编辑距离 格雷编码 接雨水 正则表达式 图———一生之敌!!!我是棒棒的小汪汪!加油!!! 8月复健治疗中... 已复健:dfs bfs 分治 复健中:dp 哎

ms二叉搜索树找中位数

ms中文转数字

有向图中所有的环路径

回忆跑步排名题(类似课程表) 拓扑排序

1. Two Sum (C++ version)

1. Two Sum (Python version)

2. Add Two Numbers

3. Longest Substring Without Repeating Characters 双指针+hash记录每个字母出现位置

5. Longest Palindromic Substring

6. ZigZag Conversion

7. Reverse Integer

8. String to Integer (atoi)

9. Palindrome Number

11. Container With Most Water 好妙的双指针

12. Integer to Roman

13. Roman to Integer

14. Longest Common Prefix 最长公共前缀,纵向判断

15. 3Sum

16. 3Sum Closest

17. Letter Combinations of a Phone Number DFS

17. Letter Combinations of a Phone Number BFS

18. 4Sum 感觉我的双指针写法不够优美 还需要再研究

19. Remove Nth Node From End of List第一次中等题不看答案还能达到这么高的击败率!!!好开心呀 2020/10/03

20. Valid Parentheses

21. Merge Two Sorted Lists

22. Generate Parentheses

24. Swap Nodes in Pairs

26. Remove Duplicates from Sorted Array

27. Remove Element

28. Implement strStr()

29. Divide Two Integers

31. Next Permutation 找出全排列中下一个更大的排列,不需要用回溯,只是简单的数组遍历+双指针逆序即可,但需要认真分析遍历是要找什么样的数字互换

33. Search in Rotated Sorted Array对二分法有了比较深刻的认识

34. Find First and Last Position of Element in Sorted Array 还能改进

35. Search Insert Position

36. Valid Sudoku

38. Count and Say

39. Combination Sum 有点回溯的东西在里面

40. Combination Sum II 哼!回溯!不过如此!20210704 11.33

41. First Missing Positive 又是一道鸽巢原理!

42. Trapping Rain Water 接雨水,hard题

46. Permutations 回溯 重要 向答主提问了

47. Permutations II

48. Rotate Image

49. Group Anagrams 还有些疑问

50. Pow(x, n) 官方题解还有更好的方法

53. Maximum Subarray

54. Spiral Matrix

55. Jump Game一道让我觉得自己是憨憨的题

56. Merge Intervals不重叠区间排序

58. Length of Last Word

62. Unique Paths

66. Plus One

67. 二进制求和

69. Sqrt(x) 数学方法,牛顿法

69. Sqrt(x) 二分法,要避免死循环,和162题对比学习

70. Climbing Stairs

72. Edit Distance 编辑距离

73. Set Matrix Zeroes

75. Sort Colors在王道见过类似题!一下子就想起来啦 没有困难的工作!只有见题不够多的狗勾!

76. Minimum Window Substring 最小覆盖子串,滑动窗口经典

78. Subsets第一次自己独立写出回溯!而且发现了一个很容易犯错的bug出现地!加油,铁废物!2020/10/24

79. Word Search1. 和200不同,200需要记录状态(题目已给出状态数组),但不需恢复原状态,也不需要return t/f,只需统计连成片的区域个数 2. 79只要有一个对的就全对,98题只要有一个错的就全错,可以对比学习

83. Remove Duplicates from Sorted List

88. Merge Sorted Array

89. Gray Code

90. Subsets II

91. Decode Ways

94. Binary Tree Inorder Traversal

98. Validate Binary Search Tree

100. Same Tree

101. Symmetric Tree

102. Binary Tree Level Order Traversal 一口气流畅的写完 自我陶醉觉得写的很好 结果超时 找了很久bug 无语 我不超时谁超时!!!!!!!你知道错了吗!你错在哪了!!! 知道了,每次pop出来的存在了cur里,判断应该判断cur的左节点和右节点,而我仍然写root.left root.right,呜呜呜我是猪你吃了我吧QuQ

103. Binary Tree Zigzag Level Order Traversal 设置flag控制方向,让我想到了之前好像看过一个,列表列出四个方向,flag+1取余控制方向

104. Maximum Depth of Binary Tree

105. Construct Binary Tree from Preorder and Inorder Traversal

107. Binary Tree Level Order Traversal II

108. Convert Sorted Array to Binary Search Tree

110. Balanced Binary Tree

111. Minimum Depth of Binary Tree

112. Path Sum

116. Populating Next Right Pointers in Each Node 为了满足测试用例 改了两个地方,第二个地方其实是关键,我以为第一个是,第一个完全可以不改!!!

118. Pascal's Triangle

119. Pascal's Triangle II

121. Best Time to Buy and Sell Stock

122. Best Time to Buy and Sell Stock II

123. Best Time to Buy and Sell Stock III

124. Binary Tree Maximum Path Sum二叉树中的最大路径和,为什么要单独定义一个函数完成递归

125. Valid Palindrome

127. Word Ladder 双向bfs写法没写 好难脑子好累以后再写吧QuQ

128. Longest Consecutive Sequence 最长连续序列(不需要相邻)

130. Surrounded Regions 和200有点像的题

131. Palindrome Partitioning 二刷时应实现回溯

134. Gas Station 感觉贪心策略没完全懂 自己的办法超时了

136. Single Number

138. Copy List with Random Pointer

139. Word Break 只要努力!!!就有好事发生!!!付出!!!就会有回报!!!加油!!!奥利给!!!

141. Linked List Cycle

143. Reorder List 嘿嘿,自己想的思路!自己写的代码!自己解决的存在cycle的bug!加油加油加油!!!只要坚持就有正反馈!!! 2020/11/12早上

144. Binary Tree Preorder Traversal 先序遍历 迭代,非递归

145. Binary Tree Postorder Traversal 后序遍历 迭代

146. LRU Cache

148. Sort List o(logn)时间 o(1)空间的链表排序 while length1>0不超时,while length就超时???疑惑

150. Evaluate Reverse Polish Notation

151. Reverse Words in a String 双端队列,Attention!!!!!!! if s[0] 和if s[0]!=' '不一样???!!!

154. Find Minimum in Rotated Sorted Array II

155. Min Stack

160. Intersection of Two Linked Lists

162. Find Peak Element 套路之外的二分查找

167. Two Sum II - Input array is sorted

168. Excel Sheet Column Title

169. Majority Element

171. Excel Sheet Column Number

172. Factorial Trailing Zeroes

179. Largest Number 运算符重载

189. Rotate Array

190. Reverse Bits

191. Number of 1 Bits

198. House Robber

200. Number of Islands

202. Happy Number

203. Remove Linked List Elements

204. Count Primes

205. Isomorphic Strings

206. Reverse Linked List

207. Course Schedule 判断图有无环,拓扑排序(bfs)/dfs,只要有一个环就全false

208. Implement Trie (Prefix Tree)

210. Course Schedule II 可以dfs构建逆邻接表做,只实现了拓扑排序,拓扑做起来更方便

213. House Robber II 打家劫舍2,环形的房子,开头结尾不能一起偷,干脆定义一个dp函数,每次避开开头/避开结尾偷,选二者最大的

215. Kth Largest Element in an Array 只需分治一侧 称之为减治,减而治之

215. Kth Largest Element in an Array 用堆排做了下,维护小根堆,保留最大的k个数,堆顶即第k大的数。

217. Contains Duplicate

219. Contains Duplicate II

225. Implement Stack using Queues

226. Invert Binary Tree

227. Basic Calculator II 好多坑的一个题,学习到了如何向0取整,栈中处理乘除要覆盖最后一个元素而非append

230. Kth Smallest Element in a BST

231. Power of Two

232. Implement Queue using Stacks

234. Palindrome Linked List

235. Lowest Common Ancestor of a Binary Search Tree

236. Lowest Common Ancestor of a Binary Tree

237. Delete Node in a Linked List 公共祖先 很经典

240. Search a 2D Matrix II 又一个减治的题,可结合215题学习

242. Valid Anagram

268. Missing Number

279. Perfect Squares 感觉有点难,可以用数学的办法解决,没仔细看,但dp和bfs的方法都是我想不到的,很妙

283. Move Zeroes

287. Find the Duplicate Number 值域二分而非下标二分,新思路,又见鸽巢原理

289. Game of Life 卷积 牛批

300. Longest Increasing Subsequence md 我是不是这辈子都学不会动态规划了

322. Coin Change 硬币找零问题,做法非常之丰富,只实现了dp办法,其他的还要再看看,动态规划注意:1. dp[0]可以不赋予意义,从实际意义看从dp1开始会比较方便理解 2. 更新的越界限制条件要仔细思考 3. 取更小/更大值的时候注意要跟自身初始值也要比较

324. Wiggle Sort II #¥%¥!%&*(&脏话 写O(n)时间O(1)空间写的想吐,跑出来时间比O(NLOGN)还要久很多 无语 这个题学会了array切片/荷兰旗/快速选择和快速排序的区别

326. Power of Three

328. Odd Even Linked List dummy不用设置,搞清楚怎么写不会太冗余

334. Increasing Triplet Subsequence 题目要求on时间复杂度,o1空间,我用动态规划是on2时间复杂度,on的空间复杂度,看了答案原来可以设置两个变量。。

341. Flatten Nested List Iterator design类型的题可以说是我的一生之敌了。。。把嵌套的list展平,不难,就是花了很长时间才搞懂函数需求,破括号用加号/递归

344. Reverse String hard题我唯唯诺诺,easy题我重拳出击

347. Top K Frequent Elements hash+ 1. most_common 2. 桶排序(拉链法)空间换时间 3. top k堆排序

378. Kth Smallest Element in a Sorted Matrix 1. 值二分,而非有序数组下标二分。2. n路归并排序。

380. Insert Delete GetRandom O(1) O(1)时间复杂度的插入删除必用hash,光用hash只能定位,如何常数时间删除?把最后一个元素覆盖要删除的元素,然后删除最后一个元素~注意 set无法随机访问下标,所以即使题目里说的set,还是要用list+dict实现,读题不要断章取义。

384. Shuffle an Array 硬拷贝!Fisher-Yates 洗牌算法!

387. First Unique Character in a String

395. Longest Substring with At Least K Repeating Characters字符串.count()统计频次,split划分,分治

409. Longest Palindrome

410. Split Array Largest Sum 美团笔试题 喝奶茶问题,将数据分为m个子数组,使得各自和的最大值最小(即奶茶喝完最晚的人最早),二分找合适的sum

412. Fizz Buzz

416. Partition Equal Subset Sum 二维dp及优化,值得反复康康,思考什么样的题用dp来做

450. Delete Node in a BST 删除bst中的节点

454. 4Sum II

543. Diameter of Binary Tree 树的直径

739. Daily Temperatures 每日温度,找当天温度后第一个比当天高的,计算日子差值;单调栈保存递增温度的日子

821. Shortest Distance to a Character 最近字符距离

930. Binary Subarrays With Sum 前缀和+哈希

991. Broken Calculator 只能x2, -1操作的计算器

1143. Longest Common Subsequence最长公共子序列 动态规划,类似编辑距离

1382. Balance a Binary Search Tree 把一个bst变得平衡,别再偏科,中序遍历获得有序数值+二分 先序重构

1466. Reorder Routes to Make All Paths Lead to the City Zero 线路规划,携程笔试题

1796. 字符串中第二大的数字

剑指offer

剑指 Offer 03. 数组中重复的数字 鸽巢原理,吊

剑指 Offer 04. 二维数组中的查找 和240题一样

剑指 Offer 05. 替换空格

剑指 Offer 06. 从尾到头打印链表

剑指 Offer 07. 重建二叉树 和105题一样

剑指 Offer 09. 用两个栈实现队列

剑指 Offer 10- I. 斐波那契数列 139题曾用过的lru_cache,此题也可用,定期复习

剑指 Offer 11. 旋转数组的最小数字说是和154题相同,我觉得和33题也可以对比学习一下

剑指 Offer 12. 矩阵中的路径 和79题一样,旧题出新错,值得反复回顾

剑指 Offer 13. 机器人的运动范围 map函数可以用

剑指 Offer 14- I. 剪绳子 题目类似于一个正整数可以拆成其他正整数的和,求这些正整数的最大连乘积. 动态规划做法。

剑指 Offer 14- I. 剪绳子 数学求导数分析做法,按3等分相乘。

剑指 Offer 14- II. 剪绳子 II 差不多得了

剑指 Offer 15. 二进制中1的个数 是n>>=1不是n=>>1啦QuQ

剑指 Offer 16. 数值的整数次方 和50题一样的,快速幂,50题我给分类到分治了,这个题我分类到数学了。。。

剑指 Offer 18. 删除链表的节点 这个题比书上简化了,和380题共同食用

剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

剑指 Offer 22. 链表中倒数第k个节点

剑指 Offer 24. 反转链表

剑指 Offer 25. 合并两个排序的链表 和20题同

剑指 Offer 26. 树的子结构 对递归到底要不要新定义函数有疑问

剑指 Offer 27. 二叉树的镜像

剑指 Offer 28. 对称的二叉树 折腾我很久的简单题,借此题想要回顾一下,dfs有时只需要在自身的函数递归,有时需要另外定义一个函数,这里另外定义了一个函数,又可以分为递归调用另外定义的函数和递归调用外面的大函数,这两个类型的题想要对比一下。 note: if not (l and r)和if not l and not r

剑指 Offer 29. 顺时针打印矩阵 和54题一样,烦人的一批

剑指 Offer 30. 包含min函数的栈 和155题相同,但当时没有实现O(1),这次学习到啦,单调辅助栈 有用的!剑指33用到了单调递减辅助栈,比较难,放一起学习~

剑指 Offer 31. 栈的压入、弹出序列 好久没有做中等题啦!自己独立做出来!开心!

剑指 Offer 32 - I. 从上到下打印二叉树 直接加入result,bfs,不需要for len

剑指 Offer 32 - II. 从上到下打印二叉树 II 要求每层隔离加入result,bfs中要限制当前层,每结束一层加入result

剑指 Offer 32 - III. 从上到下打印二叉树 III 一层从从左到右,一层从右到左,学习判断奇偶层的方法。

剑指 Offer 33. 二叉搜索树的后序遍历序列 后序遍历的处理,用到了单调栈。感觉思路还挺难的。递归的话参考先序,先确定根,找到第一个大于根值的值,再判断右边的值是否都满足条件。

剑指 Offer 34. 二叉树中和为某一值的路径 回溯,当答案中每个答案重复的时候,问题在于加入result的时刻应该在叶子结点,而非叶子结点的下一层判断!叶子结点的左孩子那次递归加入了一次result,右孩子又加入了一次,就会出现重复了。

剑指 Offer 35. 复杂链表的复制 和138题一样,因为有了random所以不能直接copy,而是要借用hash表,建立旧节点和新节点之间的对应关系。

剑指 Offer 36. 二叉搜索树与双向链表 递归函数外定义的全局变量,递归函数内的修改传不到外面。需要加self.

剑指 Offer 38. 字符串的排列 可能存在重复字母的字符串排列,答案不可以重复

剑指 Offer 39. 数组中出现次数超过一半的数字 摩尔投票。

剑指 Offer 40. 最小的k个数 堆排

剑指 Offer 42. 连续子数组的最大和 和53题一样

剑指 Offer 45. 把数组排成最小的数 和179差不多,觉得有点难的,可解释性还没仔细弄清楚

剑指 Offer 46. 把数字翻译成字符串 和91题很像但又不一样,值得对比学习

剑指 Offer 47. 礼物的最大价值 有的时候不需要另外开dp数组,可以直接在原数组的基础上覆盖

剑指 Offer 48. 最长不含重复字符的子字符串 第三题答案更丰富

剑指 Offer 49. 丑数 为了避免重复解,比如6=23=32,不采用if else,而是三个if,这样一个6可以让2和3的指针都++

剑指 Offer 50. 第一个只出现一次的字符

剑指 Offer 51. 数组中的逆序对 归并方法

剑指 Offer 52. 两个链表的第一个公共节点 和160题一样的

剑指 Offer 53 - I. 在排序数组中查找数字 I 我对二分再次升华!

剑指 Offer 53 - II. 0~n-1中缺失的数字 和268题一致

剑指 Offer 54. 二叉搜索树的第k大节点 树中维持全局变量,如何某个节点直接return到最高层,如何找到后停止后续搜索

剑指 Offer 55 - I. 二叉树的深度

剑指 Offer 55 - II. 平衡二叉树

剑指 Offer 56 - I. 数组中数字出现的次数 异或找出只出现一次的“两个”数,思路很赞!

剑指 Offer 56 - II. 数组中数字出现的次数 II 数字出现三次,找出落单的数字,按位置计算该位置为1的数字之和是否为3的倍数,若不是,则可根据这位找出落单数字。

剑指 Offer 57. 和为s的两个数字 双指针,没啥难度

剑指 Offer 57 - II. 和为s的连续正数序列 双指针+滑动窗口 有点容易错的地方,左右指针挪动的时候,求和计数记得随之减加

剑指 Offer 58 - I. 翻转单词顺序 split() 和 split(' ')

剑指 Offer 58 - II. 左旋转字符串 python不能修改字符串,局部反转再整体反转不可用,新方法借助了取余 学到了

剑指 Offer 59 - I. 滑动窗口的最大值 单调队列降低求滑动窗口中最大值的时间复杂度,简单题呐,你可一点都不简单

剑指 Offer 60. n个骰子的点数 二维数组的动态规划,f(n,s)表示扔第n个骰子的时候,和为s的出现次数?

剑指 Offer 61. 扑克牌中的顺子 array题思考出背后的充分条件

剑指 Offer 62. 圆圈中最后剩下的数字 取余方法+数学倒推

剑指 Offer 63. 股票的最大利润 121题

剑指 Offer 64. 求1+2+…+n 逻辑符短路计算1+2+...+n

剑指 Offer 65. 不用加减乘除做加法 很值得做的位运算题目,python中数字以补码形式存储,无变量位数的概念。

剑指 Offer 66. 构建乘积数组

剑指 Offer 68 - I. 二叉搜索树的最近公共祖先

剑指 Offer 68 - II. 二叉树的最近公共祖先 分析可能的三种情况,后序遍历,先判断左右再判断root,每层return,如果左右找到的都不为空,则return root,如果一侧不为空,return该侧的结果。会在上面的某层做矫正。

About


Languages

Language:Python 99.8%Language:C++ 0.2%