自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 力扣98题

知道了这几点尤其是第四点之后,我们就可以开始写代码了,中心思想就是把给出的树通过中序的顺序遍历,判断每个节点的值是不是递增的,所以首先我们要先定义一个参考的空节点max,然后用递归的方法中序遍历,当遍历到空节点的时候返回true即可。3.右子树中的所有值都大于根节点值,左子树中的所有值都小于根节点值。写这个题需要对二叉搜索树的性质有基本的了解:1.二叉搜索树可以为空。4.通过中序遍历二叉搜索树可以得到一个增序的数组。2.一棵二叉搜索树中不可以出现重复值。

2023-10-30 20:51:48 46 1

原创 力扣142环形链表2

这个方法能通过,但是比较慢,只打败了19%,然后在代码随想录看到了更好的方法,运用双指针的方法,fast指针每次移动两个,slow指针每次移动1个,如果这两个指针再次相遇,说明有环。这个题目可以分解为两个小问题:1.这个链表有没有环 2.如果有环,那么环的入口在哪里。

2023-09-12 23:19:37 46 1

原创 力扣206反转链表

这个题目是要把链表的头尾全部调转方向,其实其中的操作和数组的题目有异曲同工之妙,当我们要调转链表指向的方向时,我们总是需要要有两个节点同时参与操作,同时还要有一个临时节点用来存储原本的下一个节点,因此我们和数组一样需要用到双指针的方法,这个题目就是用了双指针。

2023-09-06 23:24:20 54 1

原创 力扣24两两交换链表中的节点

接下来再处理常规的情况,结合题目要求两两交换这一条件,我们可以判断需要分组进行操作,可能需要多个函数或者遍历,同时还有一个关键点是:当1和2、3和4分别交换之后,2的next节点也不再是3了而是4,所以我们不能把每两个节点的交换单独来处理,而是要建立两两的联系,既要用到不止一次操作,而且每个操作之间有联系,这时候应该想到递归的使用,递归函数的终止条件是当所剩下的节点不再组成两个的一组,而是只有一个或者为空,这种情况下直接返回该节点即可,和开始讲到的特殊情况处理一样。

2023-09-06 23:19:02 50 1

原创 力扣203、707

今天写了两个链表的基础题目,一个是移除链表的某个元素,一个是要自己实现链表的删除增加等功能,总结这两个题,链表这一数据结构的关键在于是否使用虚拟头节点,通常使用虚拟头节点解题会使代码更加简洁思路更加清晰,因为这样可以把头节点当成普通的节点处理,省去了单独处理头节点的步骤。

2023-09-05 22:42:03 20 1

原创 力扣59螺旋矩阵

同时我们还需要去判断上一个方向的结尾是否会和下一个方向的开始重合,导致一个元素被遍历两次,所以我们可以去制定一个规则,比如左闭右开,在上面的例子中就是从左到右遍历1和2,从上到下遍历3和4以此类推,每一个方向都遵循这个规则,就不会出现重复遍历的情况。所以在每一圈的遍历中共有四个方向的遍历,而二维数组根据不同的行列数会有不同次数的层次遍历,因此代码的总体结构就是一个while循环包含四个for循环,同时我们还需要去判断行数是否是奇数,如果是奇数我们需要对中心点的元素单独遍历。

2023-09-04 22:18:51 48 1

原创 力扣977有序数组的平方

这个题目的题眼是数组平方之后,原来位置越靠两边的元素的平方越大,越靠中间的元素的平方越小,所以我们先定义一个新的数组,用来存储我们平方排序之后的顺序,用一个参数k标志当前填入的元素个数。题目的要求其实就是把数组中所有元素都平方之后,再进行升序排序,但是如果使用这种简单的方法暴力解题,时间复杂度为O(n*nlogn),很难通过,因此我们还需要找出一个更加快速的解决方法。

2023-08-30 22:40:15 49

原创 力扣209长度最小的子数组

题目要求我们在一个数组中找到一个最短的连续子数组,满足子数组中所有元素之和大于target,面对这种题目首先容易想到从长度为1的子数组开始遍历,一直试到有满足条件的子数组出现。而暴力的解法并不是我们想要的。

2023-08-30 22:27:54 18

原创 力扣26删除排序数组中的重复项

至于如何判断元素是否重复出现,我们需要抓住数组是升序的这一个特点,因为是升序,如果有两个重复的元素出现,那么它们的下标一定是连续的,因此我们只需要判断当前元素和前一个元素是否一样就可以判断是否重复出现(且是第二次出现),如果不是就填入slow指针的位置,同时slow指针+1。题目要求在一个升序数组中原地删除重复出现的元素,因此首先是要检测出该元素是重复出现的,再将它原地删除,要想实现原地删除而不占用更多空间的功能,我们需要两个指针,运用快慢指针的方法。

2023-08-29 23:18:19 25 1

原创 力扣704二分查找

判断数组中下标为mid的元素和target的大小关系,根据这个来确定target在左边部分还是右边部分,以此类推使用循环反复执行这个步骤,知道nums[mid]等于target然后这时候的mid就是要搜索的target的下标。题目要求在一个升序的数组中搜索一个给定的值并且返回它的下标,根据题目的要求,有一个简单的方法是直接遍历数组,找出要搜索的值并且返回下标,但是这样的的算法复杂度是O(n),并不是最理想的,因此我们可以尝试使用二分法。

2023-08-29 23:09:22 49 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除