![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leecode 100
MORE_77
做研究,对一个东西要有自己的认识,才能做出不一样的东西来。
展开
-
leetcode_第17题_缺失的第一个正数——原地哈希
比如:1 2 3 4 5。如果数组里有不正常数字4 5 3 -1,就会出现 -1 5 3 4,即 3 4 位置正确。的地方,不正常数字不管。(正常数字是指,值∈[1,len])最后遍历一遍,找到最小的 i!=nums[i]即可。正常思路:另外制作一个哈希表,然后遍历就ok。这样,如果一个数组里都是正确的数字,就会出现。但是这样不符合题目空间复杂度要求,所以采用。交换存储到下标位置为。原创 2023-07-10 15:38:11 · 333 阅读 · 0 评论 -
leecode-搜索二维矩阵
不能全if ,得写else if 啊。原创 2023-06-28 17:13:55 · 635 阅读 · 0 评论 -
leecode-寻找重复数字
哇哦,原来vector可以这样初始化,学到了!不初始化会直接报错嘞!原创 2023-06-28 16:34:04 · 344 阅读 · 0 评论 -
leecode-下一排列
那就是从右到左开始遍历寻找第一次递减(这里指从右看是递减)的那个数字,例子中就是4(因为只有递减了,即4 后面有比自己大的数字,这个数字才能被交换到4的位置,成为下一排列)妈呀,其实我直接调用函数,一行代码就通过了hhh,不过这种取巧的方式不可取,还是得老老实实的写。既然是下一排列,那么肯定从某一数字开始,下一排列的数字更大,那么这个位置是怎么确定的呢?大的最小的数就可以了。(因为一定递减(这里指从右看是递减),因此从后往前遍历到第一个比。后的数组进行一个排序(因为原本是递减的,所以直接反转就可以了)原创 2023-06-28 16:25:27 · 245 阅读 · 0 评论 -
leecode-数组多数-摩尔投票法
最开始思路:排序,然后取。,但是时间复杂度不过关。摩尔投票法,学到了!原创 2023-06-28 15:50:17 · 450 阅读 · 0 评论 -
leedcode-只出现一次的数字-异或
【代码】leedcode-只出现一次的数字-异或。原创 2023-06-28 15:35:34 · 424 阅读 · 0 评论 -
leecode-字符串解码-栈
如果遇到[,就入栈,遇到]就按照数字把字符串出栈,并构造出新的字符串赋给res。用两个栈存储数字、字符串的情况。原创 2023-06-28 15:11:29 · 78 阅读 · 0 评论 -
leecode-最小栈
使用一个栈同步存储当前栈存储当前值的时候的最小值。原创 2023-06-28 14:42:23 · 44 阅读 · 0 评论 -
leecode-全排列
输出所有比当前排列 排列大的排列。输出所有比当前排列 排列小的排列。原创 2023-06-28 11:47:23 · 347 阅读 · 0 评论 -
leecode-二分查找
可以看到当target不存在于数组中时,会以nums[i]j结束循环,nums[i]就是刚好小于target的那个数字,而nums[i+1]就是大于target的数字。大家都知道二分查找其实有很多种写法,这里一个比较巧妙地点就是,这个写法可以在返回插入位置的时候直接返回。那么为什么这种写法可以呢?举例分析:如果我们的输入是 1 3 4 5 2。原创 2023-06-28 11:20:54 · 381 阅读 · 0 评论 -
leetcode100_第16题_除以自身以外数组的乘积
时间复杂度O(n)思路简单,直接看代码即可。注意细节,防止数组访问越界:ans数组长度为n+2,前后为1。nums数组大小为n。原创 2023-06-19 10:07:09 · 65 阅读 · 0 评论 -
leecode100_第15题_轮转数组
题意其实就是把后k个数字放到前面来,然后再反转个顺序。(原来vector也可以用swap,学到了)原创 2023-06-14 18:42:21 · 32 阅读 · 0 评论 -
leecode100_第14题_合并区间
【代码】leecode100_第14题_合并区间。原创 2023-06-14 14:12:37 · 34 阅读 · 0 评论 -
leecode100_第13题_最大子数组和
很简单,直接看代码。原创 2023-05-31 21:18:33 · 36 阅读 · 0 评论 -
leecode100_第12题_最小覆盖子串_滑动窗口
使用win存储窗口里每个字母的数量使用tt存储字符串t每个字母的数量每次窗口加一个字母进入的时候,就check是否满足窗口内覆盖字串t,满足就缩小窗口,不然就继续扩大窗口。原创 2023-05-31 21:05:28 · 48 阅读 · 0 评论 -
leecode100_第11题_滑动窗口最大值
使用一个map容器存储窗口内的值,每次选取map里最大值加入答案即可。原创 2023-05-13 09:48:39 · 42 阅读 · 0 评论 -
leecode100_第10题_和为K的子数组_前缀和+哈希
通过一次for循环,我们可以获得数组的前缀和,就是各种。因此当我们求出一个前缀和sum后,我们就去我们之前已经求出的前缀和里找有没有等于sum-k的,如果有, 那说明就找到一个解了。注意:这里一定是去已经求出的前缀和里找,也就是说,mp[sum]++应该在for循环最后实现,否则当k=0的时候,永远成立。原创 2023-05-12 22:37:29 · 42 阅读 · 0 评论 -
leecode100_第9题_找出字符串中所有字母异位_滑动窗口
思路很简单,使用滑动窗口获得和p一样长的字串,再进行比较就好了,问题就是重点在于使。原创 2023-05-11 12:57:31 · 46 阅读 · 0 评论 -
leecode100_第8题_无重复字符最长字串_滑动窗口
ililenlenl重点:STLset的使用上。最开始我使用的没写出来,很奇怪,是因为对set不熟悉。原创 2023-05-10 21:19:39 · 41 阅读 · 0 评论 -
leecode100_第7题接雨水_双指针
简述:两个指针分别指向两端,通过判断柱子的升降趋势来判断是否可以接水。原创 2023-05-09 23:19:43 · 685 阅读 · 0 评论 -
leecode100_第六题_三数之和_双指针
思路不难想到:外层for循环选定三数之中最小的那个,再使用双指针去技巧性穷举另外两个数字。难的是,这个题有很多坑和细节处理。nums[i]nums[i]while综上就可以避免出现重复的情况。原创 2023-05-08 14:48:19 · 57 阅读 · 0 评论 -
leecode100_第5题_盛最多水的容器_双指针_O(n)
两个板的面积两个指针分别指向最左和最右端,假设随便移动两个指针,就能暴力穷举所有的情况,求最大值即可。(其实也就是双重for循环的写法)但是指针的移动是可以有规律的:两个指针分别指向最左和最右端,选取更短板的指针向中间移动。为什么可以这样操作呢?解释:如果我们移动指向长的板的指针向里,两个板的距离(j-x-i)在变小,面积的高度要么不变,要么会变小,那么这种情况我们就从暴力枚举里排除了。如果我们移动指向短的板的指针向里,两个板的距离(j-x-i)原创 2023-05-07 18:29:55 · 59 阅读 · 0 评论 -
leecode100_第四题_移动零_双指针
题目挺简单的,就是我不细心,掉进坑里了。原创 2023-05-07 17:27:16 · 40 阅读 · 0 评论 -
leedcode100_第三题_最长连续序列_有坑
思路很简单:排序+记录。原创 2023-05-07 16:28:24 · 38 阅读 · 0 评论 -
Leedcode100_第二题_字母异位词组
由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。就可以分类成功。原创 2023-05-07 16:18:28 · 36 阅读 · 0 评论 -
Leecode_第一题_两数之和_c/c++_O(n)
给一串数字和一个目标数字,请找出哪两个数字之和等于目标数字,输出这两个数字的下标。数据中保证有且仅有唯一的答案,不存在自己加自己。原创 2023-05-07 15:52:08 · 61 阅读 · 0 评论