自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 6-6 单链表分段逆转

其中List/* 指针即结点位置 *//* 存储数据*//*线性表中下一个元素的位置 *//* 单链表头指针 */int length;/* 表长 */函数接口定义中,ElemSet是用户定义的数据类型,例如 int、double 或者 char 等;list是给定的带头结点的单链表,k是每段的长度。函数K_Reverse应将list中的结点按要求分段逆转。

2025-03-24 16:04:45 176

原创 LeetCode.283.移动零

原理如下:一开始左右指针指向同一个位置,若未遇到零,则二者一同往下遍历;若遇到了零,则左指针不动,有指针继续往后遍历,遍历到非零的值时,交换左指针指的零与右指针指的非零。如此往复,便可将数组中的元素按相对顺序排好,零排到后面。在官方题解中,虽然也是双指针,但是是左右双指针,利用交换来做。分析:依照先前的做法,依然用快慢双指针。移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。,编写一个函数将所有。

2025-03-18 10:44:39 438

原创 LeetCode.026.删除有序数组中的重复项

分析:根据上题经验,双指针基本可以满足。需要改动的地方就是快慢指针的移动条件与初值。最后返回的slow是数组最后一个的索引,并不是长度所以还要加一。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。

2025-03-18 09:32:01 259

原创 LeetCode.027.移除元素

我们注意到,当快指针的值不等于指定值,慢指针与快指针一同往后遍历;当快指针的值等于指定值,那么快指针自行往下遍历,慢指针不动,相当于把特定值给跳过了。如此往复,快指针遍历完数组后,慢指针对应的将数组完成了删除特定值。最后只需要返回慢指针就是数组的大小。值得注意的是,在进行完一次删除操作后要把数组的长度相应的减一,并且遍历下标也需要减一,否则会跳过一个数。在阅读完一定材料后,知道还可以用双指针来解决该类问题。元素的顺序可能发生改变。

2025-03-18 09:09:23 315

原创 LeetCode.367.有效的完全平方数

是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。不能使用任何内置的库函数,如。是一个完全平方数,则返回。

2025-03-17 22:25:41 190

原创 LeetCode.069.x的平方根

方法一:可以使用二分查找来快速找到平方根的。值得注意的是在判别中值的大小时,会将中值平方,此时若仍用int类型将会超过存储大小,应该用long long int。方法二:本来是在熟练二分查找的,没想到还有个牛顿迭代法,感觉有点意思。所谓牛顿迭代法,就是就是利用切线无线接近零点,具体解释可以到leetcode看解法。不允许使用任何内置指数函数和算符,例如。下述代码中xi就是切线与零点的交点。由于返回类型是整数,结果只保留。

2025-03-13 09:13:59 381

原创 LeetCode.034.在排序数据中查找元素的第一个位置和最后一个位置

对于非递减的数组,其数字由小到大排列,并且有重复,我们在二分的时候,要让mid值尽量往左走,就是在改变左右边界的时候,当mid的值与target相等时,我们要让右边界向左移,这样我们就可以向左找头。那么我们的头节点的值就可以顺利表示出来。分析:看到时间复杂度首先想到二分查找,以往的二分查找找到target就直接返回了,但这次我们需要的是一个区间,所以最好是返回这个区间的头节点或者尾节点。考虑特殊情况,如果进来的数组是空的话,无论target取什么值,我们都找不到,就会返回{-1, -1}.

2025-03-11 14:37:07 255

原创 奇数值结点链表(c语言)

函数readlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单链表头结点的指针。函数getodd将单链表L中奇数值的结点分离出来,重新组成一个新的链表。返回指向新链表头结点的指针,同时将L中存储的地址改为删除了奇数值结点后的链表的头结点地址(所以要传入L的指针)。

2025-03-11 00:17:25 812

原创 LeetCode.035.搜索插入位置

也可以直接返回right + 1,因为right总是会在插入位置的左边一位,分左右两种情况考虑,要么left向右移一位因为target太大;二分部分没问题,最后返回了右边界right,类比左闭右闭,相对的因为左闭右开,则right就是上一中情况的right + 1。若nums[mid]小于等于target,则代表target应插入在mid后面一个位置,返回mid + 1;若nums[mid]大于等于target,则代表target应插入在mid当前的位置,返回mid;请必须使用时间复杂度为。

2025-03-06 09:23:31 250

原创 LeetCode.704.二分查找

那么在while 中 (i <= j)没问题,当i == j时,代表左右边界重合取到最终值。// i代表左边界,j代表右边界。经过调察发现可能是边界而引起的超时,在第一版中用的是左闭右闭的形式[left,right]在查阅资料的时候发现,二分查找还有另外一种编写方式,就是左闭右开[left,right)给了nums的数组,想要用二分查找首先要知道最大的左右边界,即nums中的元素个数。,避免了直接相加可能产生的溢出问题。但是在之后的改变左右区间有问题,若是以原代码的形式,那么i不可能比j小。

2025-03-05 14:18:36 930

原创 记录俺的进化路程

争取日更吧[喜]

2025-03-04 19:39:19 118

空空如也

空空如也

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

TA关注的人

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