【leetcode】总结

1.Hash表的使用
1.two sum
https://blog.csdn.net/AXIMI/article/details/82729883
two sum就是从一个数组里面(无序)找到2个数的和是我们想要的目标。
可以建立一个Hash表,其中键是数字,值是数字的位置。然后设置循环看map中是否contain target-nums[i]这个键即可。循环的位置是从第一个数到最后一个数,不用担心会重复计算, 因为一旦找到了合适的一组数就直接break出去。


2.滑动窗口
3.longest substring with repeating charaters
https://blog.csdn.net/AXIMI/article/details/82827236
这道题的意思是找到一串字符串中没有重复字母的最大子串。
首先设置两个指针i,k,j
以i为基础,j一个一个右移,每移一位,k从j-1开始往前判断是否有字符和j重复
如果有重复的话,i的位置更新到k+1,j继续前移
如果没有重复的字符的话,看需不需要更新最长子串的长度和起始位置

53.Maximum SubArray
https://blog.csdn.net/AXIMI/article/details/84250739
这道题的意思是,给一串数字,求这串数字里面有最大和的连续数字子串。
就是维护一个滑动窗口,和一个values数组。加入当前指针指向的是位置i,则如果values[i-1]小于0就直接舍弃,如果values[i-1]是大于0的就保留。


3.归并排序
4.找到两个数组的中位数
https://blog.csdn.net/AXIMI/article/details/82827693
这道题用到了归并排序的思想,创建一个新的数组将这两个数组中的数字都保存在一起,然后再找中位数


4.贪心算法
11 找到能装最多水的两根柱子
https://blog.csdn.net/AXIMI/article/details/82942420
这道题的解法是,设置两个指针分别指向最左和最右的两根柱子,如果左柱高于右柱,
右柱往中间走,否则左柱往中间走;
左右柱子每次移动都要计算当前的容器容量,然后看是不是需要更新


4.DFS+回溯
https://blog.csdn.net/AXIMI/article/details/83473015
这道题是解9*9的数独题。
主要思想是DFS+回溯,先找到坑,然后从1到9依次填进去,首先看满不满足行列子块条件,满足的话在这个基础上继续填坑,如果后面发现坑填不了了,就回溯到上一个。

17.Letter Combinations of a Phone Numbers
这道题的意思就是,一个手机有3*3的键盘,每个数字都代表了不同的字母,按下不同数字可以组合出不同的字母。
https://blog.csdn.net/AXIMI/article/details/83988986

51 .N Queens
https://mp.csdn.net/mdeditor/84024090
这道题是求N*N的棋盘上摆放N个皇后,要求所有的皇后不在同行不在同列不在同一个对角线。
解题思路是一行一行地填皇后,如果当前行的当前位置是正确的就递归填下一行,否则就移到当前行的下一个位置。


5.多边界问题
41.First Missing Positive
https://blog.csdn.net/AXIMI/article/details/83582287
这道题的意思是找到数组中最小的缺失的整数,比如
[-1,0,2,3]是1;
[4,5,6]也是1;
[-4,-3,-2]也是1;
[1,2,4,5]是2
解题的基本思路是首先要排序(归并),然后去除重复的数值;
最后找到第一个非负数,然后从这个非负数开始,用折半查抄看哪一半的数是不连续的;
这个题不难,就是需要考虑的边界,一些细节的操作比较多


6.动态规划(DP)
72.Edit Distance
这道题的意思是计算要多少步才能将一个字符串转换为另外一个字符串,比如要多少步才能将horse转化为ors。(能采取的步骤包括增加一个字母、减少一个字母和替换一个字母)。
做法就是维护一张二维DP表。
https://blog.csdn.net/AXIMI/article/details/84144759

62.63 Unique Path && Unique Path II
就是简单DP


7.单调栈(monotone stack)
42.traping rain water
这道题的意思就是一些不同高度的柱子可以积累多少雨水的问题
使用减单调栈,栈中的元素是柱子的下标而不是高度。当下一个柱子比栈顶的柱子低时入栈,否则出栈。出栈的时候先计算高度差,再利用柱子之间的距离(已记录在栈元素中)来计算当前这几根柱子可以积累的雨水。
https://blog.csdn.net/AXIMI/article/details/83617217


8.找规律
59.Spiral Matrix && Spiral Matrix II
https://blog.csdn.net/AXIMI/article/details/84255343
https://blog.csdn.net/AXIMI/article/details/84287370
第一个问题是给你一个矩阵,然后求这个矩阵中的数字按照螺旋输出应该怎么输出;第二个问题是利用数字1—n^2,填充一个n*n的矩阵。

60.Permutation Sequence
https://blog.csdn.net/AXIMI/article/details/84288528
这道题是让你求n的数的全排列中,按照顺序的第k位应该是多少
规律还是比较明显的


9.分治
75.Sort Colors
https://blog.csdn.net/AXIMI/article/details/84327713
这道题的意思就是一个数组里面有0、1、2这三个数组,然后将这些数字按照0、1、2的顺序来排列。
一般的做法是统计这三个数字分别有多少个,然后再重新填进数组里面。
这里也可以用partition的做法,就是设置3个指针然后分情况来填充数字

猜你喜欢

转载自blog.csdn.net/AXIMI/article/details/83444169