- 博客(18)
- 资源 (1)
- 收藏
- 关注
原创 leetcode_485_最大连续1的个数
第一次看这道题目的时候想到了用滑动窗口,想了下如何移动窗口,也想了很多边角情况。其实代码比想象的简单很多,简单来说,用一个指针遍历数组,只要碰到1,就开始内循环,看看连续的数字1有几个。注意,虽然用了两个while循环但是时间复杂度还是O(N),原因的话就是整个数组的每个数值,只是遍历了一遍。...
2022-06-30 10:33:27
170
原创 leetcode_206_反转链表
解决这道题目需要两个指针,一个pre(previous),一个curr(current),这个curr指针一开始和head指向的节点是一样的。pre则是一直指向着curr之前的节点。上代码
2022-06-29 18:34:37
128
原创 leetcode_707_设计链表
t(index);其实我个人认为这道题恶心就恶心在while循环中同时递增指针和变量i,这样的话非常容易出现过界的情况,另外就是head指针的修改,一定要注意。用来避免上述情况的其实就是使用一个虚拟节点,但是那样的话对于边界的计算其实是比较复杂的。......
2022-06-29 18:32:33
93
原创 leetcode_203_移除链表元素
如果只是在linkedlist里面进行一次删除操作,代码相对简单,但是这里涉及到的点是多次的删除操作。在这个题目里面,我们额外定义了一个虚拟头节点,叫dummy,为什么需要这么一个虚拟头节点呢?其实主要是为了处理head的逻辑,若是删除的点是head的话,那么我们需要一个额外的if语句来修改链表,来移动head指针,而有了这个dummy结点之后,我们省下了这个多余的if语句。上代码......
2022-06-29 13:48:43
97
原创 leetcode_54_螺旋矩阵
这一道题目,思路再题目里面已经告诉你了,就是从外到内以螺旋的方式一层一层的打印出数值。而我这里的思路是,分别定义四个边界,top, bottom, left, right,在一个while循环中加上四个内循环,分别从top left 打印到top right, top right打印到bottom right, bottom right到bottom left,再从bottom left到top left。每当我们打印完一行或者一列之后需要调整边界。上代码...
2022-06-28 23:07:20
1449
原创 leetcode_76_最小覆盖子串
一道偏难的leetcode题目,一开始看到题目的标题可能就会想到滑动窗口,且这种找字符串子串的题目,基本都会用到hashmap。但是一开始可能想不到很好的思路,若是采用暴力遍历法,那么获得所有字串需要的时间为O(n2),每一次还需要对比哈希表,那么时间复杂度直接就成了O(n3),时间复杂度太高,直接不予考虑。直接上代码来解释这里额外插一句,在进行Integer的大小比较的时候,需要使用equals方法,否则过不去几个特殊情况,原因涉及到jvm以及封装问题,这里就不展开了。......
2022-06-28 13:51:02
98
原创 leetcode_283_移动零
又是一道经典的滑动窗口题目,具体的知识点可以参考我之前的这篇帖子leetcode26_删除重复项废话不多说,直接上代码
2022-06-28 11:50:32
105
原创 leetcode_26_删除排序数组中的重复项
在这里插入图片描述其实这道题目,一开始想的时候可能会有点懵,但是其实就是一道经典的滑动窗口题目。滑动窗口的入门请参考以下文章,leetcode_209_长度最小的子数组其实大概的逻辑就是,当fast指针所遍历到的数值与slow数值所指向的数值不同的时候,我们就让slow指针所指向的下一个数值等于当前fast的数值。代码如下:简单解释下nums[++slow] = nums[fast],在这里slow的数值会先加一,在被赋值成nums[fast]。...
2022-06-27 17:32:17
991
原创 leetcode_367_有效的完全平方数
这道题目和我之前发布过的https://blog.csdn.net/jasonjin1107/article/details/125487064?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22125487064%22%2C%22source%22%3A%22jasonjin1107%22%7D&ctrtid=qfpyk很相似,都是涉及到了二分查找.而唯一的不同是,我这里直接把
2022-06-27 17:06:29
1112
原创 leetcode_69_x 的平方根
这道题目,用到的是二叉查找的思想。原因就是,在二分查找的过程中,若是找到了平方根,那么直接返回就可以,若是没有,在二分查找的循环结束之后,left或者right的数值就是最接近题目要求的数值(这里就不进行数学的证明了,反正试一下就知道了)。这里可能会对mid > x / mid, mid < x / mid这样的语句有疑问。为什么不写成mid * mid > x或者mid * mid.........
2022-06-27 16:40:53
1083
原创 leetcode_209_长度最小的子数组
leetcode题目209以下是题目介绍这道题目是一道滑动窗口的经典问题,这里滑动窗口的原则就是为了让窗口里的数值符合条件,也就是大于等于target,当满足条件的时候便从左侧开始逐渐减少窗口的长度(用来找出最短窗口长度),直到滑动窗口里的数值不满足题目条件为止......
2022-06-26 16:48:32
89
原创 leetcode_59_螺旋矩阵II
虽然这道题目的难度是medium,但是本身的逻辑比较简单。拿以上n=3的情况来说,只需要在外围一圈逐次添加数值,中心位置单独赋值就可以了。废话不多说了,上代码可以看到代码不难理解,但是可能会有一些关于offset的疑问。可以看到在上面的四次while循环中,没有直接循环到边界的情况,都是跟边距有一点距离的,而这个距离就是offset。有了offset,才好进行赋值,否则则需要一大堆if语句,极其容易使代码变得混乱。............
2022-06-26 16:38:42
100
原创 leetcode_35_搜索插入位置
又是一道经典的二分查找题目,为什么是二分查找呢?其实只需要看几个关键信息。这道题目要求时间复杂度为O(log n),并且给了一个排好序的数组不论是什么样的二分查找,其实涉及到的就是一些边界的判断,比如说是应该left.........
2022-06-26 16:36:44
125
原创 leetcode_34_在排序数组中查找元素的第一个和最后一个位置
若是完全理解这道题目就说明完全理解了二分查找!一开始直接看给的条件这三个条件全部满足,很显然需要用到二分查找。然而, 这道题目难就难在一些边界的判定和对于二分查找的一些修改。如第一个例子,再找target == 8的时候,需要分别找到两个下标,那么我们就需要对寻常的二分查找代码进行一些更改了。这里顺便加一下左闭右闭的写法,这两个的区别我在另一篇文章里写过.https://blog.csdn.net/jasonjin1107/article/details/125443796......
2022-06-26 16:33:33
105
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人