mine_song
==============================
1. subtree of another tree :两棵树的根节点,flag;
2. Range addition ||范围相加:行,列和输入取最小值,乘积;
3. minimum index sum of two lists最小索引:两个map存输入的两个list, 如果之和小于min的话,重新初始化一个链表。
4. Kill Process杀死进程:一个map存储为邻接表,然后对邻接表进行深度进行遍历DFS;
5. Shortest unsorted conitinuous subarray最短未排序数组:两个指针high-low+1;
6. Longest Harmonious subsequence最长和谐子序列:一个map存储输入数据和数据出现的次数,包含num+1;
7. Reorder List重排链表:两个指针fast,slow找中点,翻转后半部分,合并前后两部分。
8. Increasing Triplet Subsequence上升的三元组;min1,min2;小于两者返回true;
9. Decode String 解码字符串:动态规划
10. Detect Capital 大写字母的合法性:toUpperCase,toLowwerCase,substring等操作
11. Expression add operators表达式求值:递归
12. Evaluate Reverse Polish Notation逆波兰式求值:一个栈遇到符号出栈,遇到数值入栈;
13. basic calculator实现计算器:一个栈,左右括号+,-,*,/
14. 超级丑数,Super ugly number:与丑数不同的是,之前求丑数是从2,3,5中找,而本题是给定的质数,求出他们的倍数的超级丑数
15. 是不是丑数; 最小丑数;%、/;2,3,5;List;
16. Rectangle Area求矩形面积覆盖:
17. 主元素:1/2;1/3;1/k; 1个计数器,2个计数器,
18. Kth Smallest Element in a BST二叉树第k小的数字:中序遍历+t++;
19. Linked List Cycle 链表找环:环的入口节点;fast=fast.next.next;slow=slow.next;
20. Find the duplicate Number:n+1个元素中,每个元素都在1-n之间,二分查找;时间复杂度O(nlogn);空间复杂度O(1);
21. Find peak Element寻找peak元素:二分查找,注意和前面对比;和后面对比。
22. Find Node in Binary Search Tree出现次数最多的元素:中序遍历,map存储元素,元素出现的次数,记录最大的max次数,遍历map;==max;list.add()
23. Binary Search Tree Iterator的迭代:List, 中序遍历,pos记录位置;
24. One Edit Distance一次编辑距离:枚举各种情况,字符串之差大于1,等于1,等于0;
25. Edit Distance字符串的最小编辑距离DP&DFS:动态规划;
26. Unique Binary Search Trees 的数量:动态规划
27. Insertion Sort List链表插入排序:头插法;
28. Add Two Numbers链表数字加法:currentIndexVal=n%10; carry=n/10;
29. Partition List分区链表:三个指针,p1
30. Pascal's Triangle杨辉三角;
31. Construct Binary Tree重建二叉树:前序和中序,中序和后序;
32. Multiply Strings大整数乘法;直接乘就可以,注意进位;
33. Sort Colors三色排序;计数排序;
34. Group Anagrams按照字典序分组:map, toCharArray, Arrays.sort;
35. Move Zeroes移动0到末尾:两个指针,一个指向0,一个指向非0,然后遇到非 0交换;
36. Set Matrix Zeroes矩阵元素置0:两个set存储为0的行和列,然后设置为0;
37. Target Sum 目标和:动态规划;+,-;11111;3
38. Populating Next Right Pointers in Each Node ||:Populating Next Right Pointers in Each Node;双端队列deque--BFS;
39. Find Bottom Left Tree Value 最左下结点:Queue,从右向左遍历二叉树;
40.Binary Tree Right Side View (JAVA)(二叉树最右侧结点):BFS;
41. Find Largest Value in Each Tree Row (JAVA)(二叉树每行的最大值):BFS
41. Spiral Matrix II (JAVA)(螺旋矩阵2):给定n输出n*n的旋转矩阵;
42. Spiral Matrix (JAVA)(顺时针打印矩阵):左-右,上-下;右-左;下-上;
43. Restore IP Addresses (JAVA)(重新组合IP):
44. Sudoku Solver (JAVA)(数独游戏解集):
45. Restore IP Addresses (JAVA)(重新组合IP):
46. Valid Sudoku Solver (JAVA)(数独游戏解集):
47. N-Queens (JAVA)(打印N皇后解集)
48. N-Queens (JAVA)(打印N皇后解集)的个数
49. Surrounded Regions (JAVA)(环绕区域):
50.ZigZag Conversion (JAVA)(之字形转换)
51. Product of Array Except Self (JAVA)(构建乘积数组):tmp+B[i]
52. Maximum Product Subarray (JAVA)(子数组的最大乘积):最大子数组和;动态规划;
53. House Robber (JAVA)寻找数组不相邻组合最大值DP;2)有环;3)树形结构
54. Friend Circles(JAVA)朋友圈数量;DFS或BFS;
55. Matrix (JAVA)零一矩阵;BFS,DFS;
56. Minimum Height Trees (JAVA) 图中最矮的树: BFS;课程安排,课程安排2=拓扑排序;
57.树的前序,中序,后序(递归和非递归实现);层序遍历,之字形打印;
58. Permutations/Permutations || (JAVA) (全排列1,2):数组的全排列有无重复数字;
59. Trapping Rain Water (JAVA)收集雨水:Container With Most Water Java版(最大盛水容积) ;左右向中间移动;
60. Candy (JAVA)根据等级分糖果:
61. Longest Increasing Path in a Matrix Java版 (最长上升路径):遍历
62. Binary Tree Maximum Path Sum Java版 (二叉树的最大路径和):从根节点到任意叶结点;树中任意两个节点之间;
63. 112 & 113 & 437. Path Sum java版(二叉树路径和):1)是否存在和为tar的路径;2)返回所有和为tar的路径;3)树中有负值的节点;
64. Unique Paths ||64. Minimum Path Sum java版(路径(最短)可达):独立的路径数量,最小路径和;矩阵中有没有1阻塞;
65. Rotate List java版(旋转链表):两个指针找k的位置,合并两部分;
66. Find Minimum in Rotated Sorted Array版(在旋转的数组中查找最小数字):有无重复数字两种。low,high指针,二分查找。
67. Sort List Java版(对链表排序)21.Merge Two Sorted Lists Java版 递归和非递归实现;23.Merge k Sorted Lists Java版本(合并k个有序的链表) ;归并排序;PriorityQueue;
68. Median of Two Sorted Arrays java (两个排序数组的中位数):p,q两个指针;
69. Jump Game II&55. Jump Game java (跳跃游戏):1)能不能调到最后;2)最少的跳跃次数;贪心或动态规划;
70. 347. Top K Frequent Elements &451. Sort Characters By Frequency:得到给定k个出现频次最多的数字;
71. Kth Largest Element in an Array java 版(第k大的数字):快排或最小堆
72. Most Frequent Subtree Sum II java 版(求子树和):后序遍历;map记录求和后出现的次数;
73. Combinations&78. Subsets(排列问题)&90. Subsets II java 版(求所有子集):递归+List;深度优先搜索+回溯
74. Search for a Range java 版(数字在排序数组中出现的次数):数字在排序数组中出现的次数;firstindex,lastindex.
75. Next Permutation java 版(下一个排列):
76. Swap Nodes in Pairs java 版(成对翻转链表):p=h.next,q=h.next.next;
77. Generate Parentheses java 版(圆括号的合法序列):产生括号的合法序列,递归;
78. Letter Combinations of a Phone Number java 版(键盘排列):深度优先遍历
79. 4Sum Java版(结果是目标值的四个数字和);3sum; 3 closet sum; 2sum;
80. Integer to Roman & Roman to Integer;知道对应关系即可;
81. Longest Palindromic Substring Java版(最长回文子串):动态规划
82. Longest Substring Without Repeating Characters Java版(最长子串长度):子串必须连续:
103. Contains Duplicate II Java版 (数组中出现重复元素):Map
104. Reverse Linked List Java版 (使用头插法反转链表)
105. Count Primes Java版 (1到n之间质数的个数,埃拉托色尼筛选法):规律问题
106. Remove Linked List Elements Java版(删除链表中的和val相等的元素):
107. Happy Number Java版 (开心数):规律
108. Number of 1 Bits Java版 (整数对应的二进制中1的个数):n = n & (n - 1); 消除最左边的1;
109. Rotate Array Java版 (对数组的部分翻转):对指定K位后面的翻转;
110. Factorial Trailing Zeroes Java版 (求n的阶乘末尾0的个数):5,25,125
111. Excel Sheet Column Number Java版 (二十六进制转化为十进制):找对应关系
112. Intersection of Two Linked Lists Java版 (两个链表的第一个公共结点):len1-len2
113. Single Number Java版(只出现一次的数字);只出现一次的两个数字;异或操作
Single Number 1:只有一个数字出现了一次,其他数字都出现了两次;Single Number2:只有一个数字出现了一次,其他数字都出现了3次;
Single Number3:只有一个两个数字出现了一次,其他都出现了两次。 都是用位运算的方法
114. Valid Palindrome Java版:两边向中间走,遇到符号不是a-z的字符跳过;
115. Best Time to Buy and Sell Stock II:最大收益,动态规划
116. Maximum/Minimum Depth of Binary Tree Java版(树的最大、最小深度):递归,queue层次遍历
117. Merge Sorted Array Java版:归并,冒泡排序是稳定的排序;
118. Remove Duplicates from Sorted List Java版:移除排序数组中的重复元素,使用两根指针(下标),一个指针(下标)遍历数组,另一个指针(下标)只取不重复的数置于原数组中。
119. 69.Sqrt(x) & 367. Valid Perfect Square Java版 (求一个数的平方根)
120. Add Binary Java版:遇到2进位
121. Plus One Java版:注意进位就可以
122. Length of Last Word Java版:split, 从后往前遍历计数
123. Maximum Subarray Java版:动态规划
124. Third Maximum Number Java版:返回数组中第三大的数,如果不存在就返回最大值。
125. Number Complement Java版:掩码和原始数据异或得到结果
126. Hamming Distance Java版:异或的结果中有多少个1;
127. Search Insert Position Java版 递归和非递归实现:在有序数组中找插入位置
128. Implement strStr() Java版
129. Remove Element Java版:在数组中,删除指定值得数据,两个指针
130. Remove Duplicates from Sorted Array Java版:返回删除的长度;返回删除元素后的数组
131. Merge Two Sorted Lists Java版 递归和非递归实现:归并
132. Valid Parentheses Java版:元素中包含 {,[,(
133. Longest Common Prefix Java版 两种方法实现: 使用一个最短的字符串匹配其他所有字符串,substring
134. Palindrome Number Java版 两种方法实现:翻转数字,不适用其他空间。%./
135. Reverse Integer Java版 通过溢出测试:有负号
136.