刷题技巧

我看大家刷题刷的我心好累,明明刷题是最简单的,你们怎么能把它搞的这么复杂==
算法题是技术面试的重点,绝对是重点。简单题要求你能一遍写的bug free。实话,好像也没考过难题。
1.首先,打开leetcode那个网站之后在框里直接写,不要用IDE了。
2.其次,java流你需要了解容器最基本的用法和函数。C++流你需要了解STL的用法和泛型算法。 (这是最基本的)
java: https://docs.oracle.com/javase/7/docs/api/overview-summary.html
C++:  http://www.cplusplus.com/
3.按照分类刷题,就是右下角tag。
绝对不要一开始就点开数组,为什么,数组是什么都能用的,什么DP啦,贪心啦都能用数组。
我推荐第一个分类是链表,所有的链表题是有模版的,不管你做什么题,你都需要考虑三个因素:判头判尾判空。
hard难度的题目不想想就先放过,easy和medium难度的需要掌握,尤其是easy,面试要是考到原题一定要写的bug free.
easy和medium难度要是想不出来就看答案,看完答案AC之后这还不算完事,你第二天一定要不看答案自己写一遍。要是忘了就再看答案,然后第三天以此类推。
hard难度不要强求自己啦,你要是真能easy和medium全通了,找个差不多的好工作也根本不是啥问题。
4.看discuss很重要 (选most votes),不要网上搜解题报告,要是discuss的code看不懂了再搜,看看有什么好的解释来帮助你理解这个问题。
还有一个重点就是一定要反复记忆,这个跟背单词没有任何区别,第一遍绝对是最痛苦的,如果你想来第二遍,你就会发现好多题都会了,都能写的bug free了。
要是想调试的话,直接在函数中间cout那个变量,leetcode是支持中间打印东西的。
还有一条,能写的短的函数一定要写的短。
就是比如说翻转字符串:
使用STL的话:可以这么写:
1
2
3
4
5
6
7
class Solution {
public :
     string reverseString(string s) {
         reverse(s.begin(), s.end());
         return s;
     }
};


如果面试官不让你使用STL的话,可以这么写:
(我这种写法叫做字符串的in-place翻转,一共就三句话,你需要把它背下来。)
1
2
3
4
5
6
7
8
9
10
class Solution {
public :
     string reverseString(string s) {
         int i = 0, j = s.size()-1;
         while (i < j){
             swap(s[i++], s[j--]);
         }
         return s;
     }
};


最后,希望北邮人都能找个好工作。



             

1 Two Sum 2 5 array sort

        set Two Pointers

2 Add Two Numbers 3 4 linked list Two Pointers

          Math

3 Longest Substring Without Repeating Characters 3 2 string Two Pointers

        hashtable  

4 Median of Two Sorted Arrays 5 3 array Binary Search

5 Longest Palindromic Substring 4 2 string  

6 ZigZag Conversion 3 1 string  

7 Reverse Integer 2 3   Math

8 String to Integer (atoi) 2 5 string Math

9 Palindrome Number 2 2   Math

10 Regular Expression Matching 5 3 string Recursion

          DP

11 Container With Most Water 3 2 array Two Pointers

12 Integer to Roman 3 4   Math

13 Roman to Integer 2 4   Math

14 Longest Common Prefix 2 1 string  

15 3Sum 3 5 array Two Pointers

16 3Sum Closest 3 1 array Two Pointers

17 Letter Combinations of a Phone Number 3 3 string DFS

18 4Sum 3 2 array  

19 Remove Nth Node From End of List 2 3 linked list Two Pointers

20 Valid Parentheses 2 5 string Stack

21 Merge Two Sorted Lists 2 5 linked list sort

          Two Pointers

          merge

22 Generate Parentheses 3 4 string DFS

23 Merge k Sorted Lists 3 4 linked list sort

        heap Two Pointers

          merge

24 Swap Nodes in Pairs 2 4 linked list  

25 Reverse Nodes in k-Group 4 2 linked list Recursion

          Two Pointers

26 Remove Duplicates from Sorted Array 1 3 array Two Pointers

27 Remove Element 1 4 array Two Pointers

28 Implement strStr() 4 5 string Two Pointers

          KMP

          rolling hash

29 Divide Two Integers 4 3   Binary Search

          Math

30 Substring with Concatenation of All Words 3 1 string Two Pointers

31 Next Permutation 5 2 array permutation

32 Longest Valid Parentheses 4 1 string DP

33 Search in Rotated Sorted Array 4 3 array Binary Search

34 Search for a Range 4 3 array Binary Search

35 Search Insert Position 2 2 array  

36 Valid Sudoku 2 2 array  

37 Sudoku Solver 4 2 array DFS

38 Count and Say 2 2 string Two Pointers

39 Combination Sum 3 3 array combination

40 Combination Sum II 4 2 array combination

41 First Missing Positive 5 2 array sort

42 Trapping Rain Water 4 2 array Two Pointers

          Stack

43 Multiply Strings 4 3 string Two Pointers

          Math

44 Wildcard Matching 5 3 string Recursion

          DP

          greedy

45 Jump Game II 4 2 array  

46 Permutations 3 4 array permutation

47 Permutations II 4 2 array permutation

48 Rotate Image 4 2 array  

49 Anagrams 3 4 string  

        hashtable  

50 Pow(x, n) 3 5   Binary Search

          Math

51 N-Queens 4 3 array DFS

52 N-Queens II 4 3 array DFS

53 Maximum Subarray 3 3 array DP

54 Spiral Matrix 4 2 array  

55 Jump Game 3 2 array  

56 Merge Intervals 4 5 array sort

        linked list merge

        red-black tree  

57 Insert Interval 4 5 array sort

        linked list merge

        red-black tree  

58 Length of Last Word 1 1 string  

59 Spiral Matrix II 3 2 array  

60 Permutation Sequence 5 1   permutation

          Math

61 Rotate List 3 2 linked list Two Pointers

62 Unique Paths 2 3 array DP

63 Unique Paths II 3 3 array DP

64 Minimum Path Sum 3 3 array DP

65 Valid Number 2 5 string Math

66 Plus One 1 2 array Math

67 Add Binary 2 4 string Two Pointers

          Math

68 Text Justification 4 2 string  

69 Sqrt(x) 4 4   Binary Search

70 Climbing Stairs 2 5   DP

71 Simplify Path 3 1 string Stack

72 Edit Distance 4 3 string DP

73 Set Matrix Zeroes 3 5 array  

74 Search a 2D Matrix 3 3 array Binary Search

75 Sort Colors 4 2 array sort

          Two Pointers

76 Minimum Window Substring 4 2 string Two Pointers

77 Combinations 3 4   combination

78 Subsets 3 4 array Recursion

          combination

79 Word Search 3 4 array DFS

80 Remove Duplicates from Sorted Array II 2 2 array Two Pointers

81 Search in Rotated Sorted Array II 5 3 array Binary Search

82 Remove Duplicates from Sorted List II 3 3 linked list Recursion

          Two Pointers

83 Remove Duplicates from Sorted List 1 3 linked list  

84 Largest Rectangle in Histogram 5 2 array Stack

85 Maximal Rectangle 5 1 array DP

          Stack

86 Partition List 3 3 linked list Two Pointers

87 Scramble String 5 2 string Recursion

          DP

88 Merge Sorted Array 2 5 array Two Pointers

          merge

89 Gray Code 4 2   combination

90 Subsets II 4 2 array Recursion

          combination

91 Decode Ways 3 4 string Recursion

          DP

92 Reverse Linked List II 3 2 linked list Two Pointers

93 Restore IP Addresses 3 3 string DFS

94 Binary Tree Inorder Traversal 4 3 tree Recursion

        hashtable morris

          Stack

95 Unique Binary Search Trees II 4 1 tree DP

          DFS

96 Unique Binary Search Trees 3 1 tree DP

97 Interleaving String 5 2 string Recursion

          DP

98 Validate Binary Search Tree 3 5 tree DFS

99 Recover Binary Search Tree 4 2 tree DFS

100 Same Tree 1 1 tree DFS

101 Symmetric Tree 1 2 tree DFS

102 Binary Tree Level Order Traversal 3 4 tree BFS

103 Binary Tree Zigzag Level Order Traversal 4 3 queue BFS

        tree Stack

104 Maximum Depth of Binary Tree 1 1 tree DFS

105 Construct Binary Tree from Preorder and Inorder Tr 3 3 array DFS

        tree  

106 Construct Binary Tree from Inorder and Postorder T 3 3 array DFS

        tree  

107 Binary Tree Level Order Traversal II 3 1 tree BFS

108 Convert Sorted Array to Binary Search Tree 2 3 tree DFS

109 Convert Sorted List to Binary Search Tree 4 3 linked list Recursion

          Two Pointers

110 Balanced Binary Tree 1 2 tree DFS

111 Minimum Depth of Binary Tree 1 1 tree DFS

112 Path Sum 1 3 tree DFS

113 Path Sum II 2 2 tree DFS

114 Flatten Binary Tree to Linked List 3 3 tree Recursion

          Stack

115 Distinct Subsequences 4 2 string DP

116 Populating Next Right Pointers in Each Node 3 3 tree DFS

117 Populating Next Right Pointers in Each Node II 4 2 tree DFS

118 Pascal's Triangle 2 1 array  

119 Pascal's Triangle II 2 1 array  

120 Triangle 3 1 array DP

121 Best Time to Buy and Sell Stock 2 1 array DP

122 Best Time to Buy and Sell Stock II 3 1 array greedy

123 Best Time to Buy and Sell Stock III 4 1 array DP

124 Binary Tree Maximum Path Sum 4 2 tree DFS

125 Valid Palindrome 2 5 string Two Pointers

126 Word Ladder II 1 1    

127 Word Ladder 3 5 graph BFS

          shortest path

128 Longest Consecutive Sequence 4 3 array  

129 Sum Root to Leaf Numbers 2 4 tree DFS

130 Surrounded Regions 4 3 array BFS

          DFS

131 Palindrome Partitioning 3 4 string DFS

132 Palindrome Partitioning II 4 3 string DP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值