leetcode速解题总结

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分区链表:三个指针,p1x; 然后合并p1,p2;

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版(最长子串长度):子串必须连续:

83.  Number of Islands Java版(岛屿的数量):深度优先搜索
84.  Island Perimeter Java版(求周长):规律题,遍历;
85.  Heaters Java版(加热器):二分查找
86.  Word Ladder Java版 (单词等长变换):BFS
87.  K-diff Pairs in an Array Java版: map
88.  Max Consecutive Ones Java版 (二进制连续最长1的个数):动态规划
89.  Find All Numbers Disappeared in an Array Java版 (找出缺少的数字):技巧,每个元素和对应位置的关系
90.  Guess Number Higher or Lower Java版 (猜数字大小二分查找):
91.  Sum of Two Integers Java版 (不使用加减乘除做加法):不用加减乘除算加法,使用位运算;
92.  349 & 350. Intersection of Two Arrays Java版(求数组交集)):有无重复元素,Map操作;
93.  344. Reverse String & 345. Reverse Vowels of a String Java版(反转字符串):单词翻转,整句翻转
94.  416#Partition Equal Subset SumJava版. 对半分(0-1背包,动态规划):
95.  Range Sum Query - Immutable Java版 (多次计算数组内任意两个下标之间的和):直接减法
96.  Missing NumberJava版 (找出0~N中缺少的数字):从n一直加减数组中的元素就可以得到缺失的元素;
97.  Valid Anagram Java版 (判断两个字母串是否具有相同的字母组合):toCharArray, Arrays.sort,String.valueOf(chs).equals
98.  Delete Node in a Linked List Java版 (删除链表中指定的结点):cur.next=cur.next.next
99.  231# Power of Two&326. Power of Three Java版 (判断是否为2,或者3 的幂):
100.  Add Digits Java版 (相加各个位数):
101.  Invert Binary Tree Java版 (交换树的左右子树):
102. 两个栈实现一个队列,两个队列实现一个栈

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. 

你可能感兴趣的:(算法)