leetcode刷题总结 1-100

leetcode

 

1Two Sum

维护2个指针即可

2Add Two Numbers

类似于大数相加

3Longest Substring Without Repeating Characters

找最长的不出现重复字符的子串,维护2个指针滑动即可。

4Median of Two Sorted Arrays

找2个有序数组的中位数

5Longest Palindromic Substring

找最长的回文子串,枚举i,然后向两边扩展

6ZigZag Conversion

模拟题

7Reverse Integer

水题

8String to Integer (atoi)

模拟题,字符串转成整数

9Palindrome Number

确定一个数是否是回文数

10. Regular Expression Matching

判定正则表达式是否匹配,只有*和.的情况

11. Container With Most Water

好题 也是维护2个指针向中间移动,移动的那个肯定是短的

12Integer to Roman

数字转罗马表达

13Roman to Integer

罗马字符表达转数字

14Longest Common Prefix

找一堆字符串的最长公共前缀,网上的都是暴利,可以用字典树,构造最后一个字符串的时候,一边构造,一边判断节点的大小是否等于字符串数

 

153Sum

 

a+b+c=0 => a+b=-c 排序 如果数字比较小的话用x[n]=1表示有n这个数,

排序,2个循环遍历a,b,然后二分或者x[-(a+b)] 是否存在确定第三个数 复杂度n^2longn

循环第一个 然后 从剩下的两边往中间压,复杂度n^2

163Sum Closest

a+b+c=x => a+b=x-c

最low的就是三个for循环,好一点的就是2个for循环,在二分第三个x-c最接近的,复杂度n^2logn

还是确定第一个,另外两个从两端往中间压 n^2复杂度

17Letter Combinations of a Phone Number

水题

184Sum

类似于3sum

19Remove Nth Node From End of List

删除链表倒数第n个节点,快慢指针,可以先移动n步做个差。

20Valid Parentheses

水题

21Merge Two Sorted Lists

水题,合并2个有序列表

22Generate Parentheses

n对括号有多少种表达的方式 递归一下

23Merge k Sorted Lists

堆维护每个链表的头元素,或者两两归并,复杂度loknk

24Swap Nodes in Pairs

两两交互链表的节点,也是基本操作

25Reverse Nodes in k-Group

链表每k个反转

26Remove Duplicates from Sorted Array

删除排序数组重复的元素

27Remove Element

水题

28Implement strStr()

kmp

29. Divide Two Integers

好题,模拟除法,不能用取模,乘法,除法

30. Substring with Concatenation of All Words

求主串包含所有子串的起点和终点,子串长度都是相等的

 

31. Next Permutation

 

求下一个排列,找一下规律看看

32. Longest Valid Parentheses

好题啊 dp和栈都能解

33Search in Rotated Sorted Array

一个有序的数组 分成了2段 求一个数 可以二分

34Search for a Range

找目标数字 起点和终点 二分

35Search Insert Position

有序数组找目标数字 二分

36Valid Sudoku

验证九宫格是否合法

37. Sudoku Solver

数独 求解,递归 或者 舞蹈链 dance link

38Count and Say

暴利模拟

39Combination Sum

题意是求和假期加起来等于s的所有组合,数字可以用无数次

网上很多都是暴力递归+剪枝,剪枝无非是

1排序,过滤掉比s大的 2 查询到 >= s的情况下直接返回 因为是排序后的,接下来搜索的结果肯定至少大于等于的,答案也不能重复,所以剪枝

复杂度应该是2^n 

40Combination Sum II

相对于上一题 数字只能使用一次

41. First Missing Positive

好题啊,求第一个不存在的正数,时间复杂度要求n,空间复杂度要求常数 用a[i]表示i+1

42. Trapping Rain Water

好题,最大储水量,对于每一个点,记录左边和右边的最大值,可以一边滑动一边求左右最大值,不需要申请n空间记录每一个

43Multiply Strings

大数相乘

44. Wildcard Matching

判断正则表达式是否匹配,有?和*2种情况

45Jump Game II

数组每个元素表示你最大能跳几步,求最少几步调到终点,开始在数组第一个位置,贪心即可

46Permutations

求全排列,递归即可,非递归还没有研究

47Permutations II

求全排列,有重复的数字,递归的时候特殊处理一下

48Rotate Image

将一个n*n的数组顺时针旋转90度

49Group Anagrams

将字符串分组,eat tea为一组,字符串哈希

50Pow(x, n)

快速幂

51N-Queens

n皇后问题

52N-Queens II

n皇后问题

53Maximum Subarray

求和最大的子序列

54Spiral Matrix

n*m矩阵,螺旋状打印

55Jump Game

数组每个元素表示你最大能跳几步,求是否能跳到终点,开始在数组第一个位置,贪心即可 参考45题

56Merge Intervals

将区间合并 1,3 2,5 合并成1,5 排序处理即可 贪心

57Insert Interval

给你一些不重叠的区间 现在加入合并一个区间

58Length of Last Word

求最后一个单词的长度 水题

59Spiral Matrix II

螺旋打印n*n数组

60. Permutation Sequence

求第k个全排列

61Rotate List

链表断开在连接

62Unique Paths

求从左上角到右下角的方案数 dp或者c(n+m,n)组合数

63Unique Paths II

相对于62题多了障碍物,只能dp了

64Minimum Path Sum

求左上角到右下角和最小的路径,dp

65Valid Number

模拟题,验证一个字符串是不是数字

66Plus One

数字+1

67Add Binary

模拟2进制加法

68Text Justification

字符串分成l个字符每行,填充空格 模拟题

69. Sqrt(x)

开根号,只取整数,网上有二分和牛顿迭代法

70Climbing Stairs

斐波那契数列

71Simplify Path

简化字符串 "/a/./b/../../c/", => "/c" 模拟

72Edit Distance

编辑距离 dp n^2

73Set Matrix Zeroes

一个矩阵 如果某个元素是0,将该行该列都置零

74Search a 2D Matrix

在一个行都递增的矩阵里面查找一个数是否存在,下一行第一个比上一行最后一个大

那不就是全递增的吗,二分

75Sort Colors

就0,1,2 3种数字排序

76Minimum Window Substring

滑动窗口,在s中找到最短的包含t的字符串

77Combinations

n,k 求包含k个数字的组合数 递归

78Subsets

求不重复数集的所有子集 递归

79. Word Search

求字符串是否存在 搜索

80Remove Duplicates from Sorted Array II

删除重复数字 最多只能出现2次

81Search in Rotated Sorted Array II

一个有序的数组 分成了2段 求一个数 可以二分 同33 只不过 有重复数字

82Remove Duplicates from Sorted List II

将有序链表中的重复数字全部删除

83Remove Duplicates from Sorted List

和上一题相比 区别就是 一样的只留下一份

84Largest Rectangle in Histogram

单调队列 dp

85Maximal Rectangle

最大全1子矩阵 dp

86Partition List

给一个链表,将小于值x的结点放到所有大于等于值x的结点的前面,不要改变结点之间的顺序

注意边界处理

87. Scramble String

区间dp 或者从小的往大的推

判断isScramble(s11,s21)&&isScramble(s12,s22)或者isScramble(s12,s21)&&isScramble(s11,s22)

88Merge Sorted Array

合并2个有序数组

89. Gray Code

求格雷码,构造题

90. Subsets II

求不重复的子集,递归的时候判断一下如果和前面的一样 跳过即可

91Decode Ways

dp 求字符串的解码数,比如12 可以是AB 也可以是L

92Reverse Linked List II

部分链表反转

93Restore IP Addresses

分隔ip地址,递归加上三个点,每段判断一下即可

94Binary Tree Inorder Traversal

中序遍历二叉树,非递归方法

95Unique Binary Search Trees II

求1-n组成的二叉索引树数量 每个点都可以作为根 递归 左边比根小1-i到1右边比根大i+1到n

96. Unique Binary Search Trees

这题和上题一样,但是是求数量 可以用卡特兰树

97Interleaving String

s3是否是s1和s2交错合并成的 dp

98Validate Binary Search Tree

验证是否是二叉树,中序遍历是有序的,可以利用94题的非递归方法

99. Recover Binary Search Tree

恢复二叉索引树,可以使用中序遍历的时候作比较

100Same Tree

2棵树是否相等

你可能感兴趣的:(心路历程)