各人好,我是小卡皮巴拉
文章目次
目次
力扣标题: 移除元素
标题形貌
示例 1:
示例 2:
解题思绪
详细思绪
标题要点
完备代码
兄弟们共勉 !!!
每篇前言
博客主页:小卡皮巴拉
咱的标语:🌹小比特,大空想🌹
作者哀求:由于博主程度有限,难免会有错误和禁绝之处,我也非常渴望知道这些错误,恳请大佬们品评斧正。
力扣标题: 移除元素
原题链接:移除元素
标题形貌
给你一个数组 nums 和一个值 val,你必要 原地 移除全部数值即是 val 的元素。元素的次序大概发生改变。然后返回 nums 中与 val 差别的元素的数目。
假设 nums 中不即是 val 的元素数目为 k,要通过此题,您必要实验以下操纵:
- 更改 nums 数组,使 nums 的前 k 个元素包罗不即是 val 的元素。nums 的别的元素和 nums 的巨细并不告急。
- 返回 k。
示例 1:
输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2,_,_]
表明:你的函数函数应该返回 k = 2, 而且 nums中的前两个元素均为 2。
你在返回的 k 个元素之外留下了什么并不告急(因此它们并不计入评测)。
示例 2:
输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,4,0,3,_,_,_]
表明:你的函数应该返回 k = 5,而且 nums 中的前五个元素为 0,0,1,3,4。
注意这五个元素可以恣意次序返回。
你在返回的 k 个元素之外留下了什么并不告急(因此它们并不计入评测)。
解题思绪
我们在这里用到双指针法来举行数组去重:给定一个排序数组,必要在原地删除重复出现的元素,使每个元素只出现一次,并返回移除后数组的新长度。可以使用快慢指针来实现,快指针用于遍历数组,慢指针用于指向已处置惩罚元素的末了一个位置。
详细思绪
初始化双指针:
- 使用两个指针 dst 和 src,都初始化为0。
- dst 指针用于纪录当前不即是 val 的元素应该放置的位置(即目标位置)。
- src 指针用于遍历整个数组。
遍历数组:
- 遍历数组 nums,使用 src 指针从0开始遍历。
- 假如 nums[src] 不即是 val,则将 nums[src] 的值赋给 nums[dst],而且 dst 指针向后移动一位(dst++,在Python中表现为 dst += 1)。
- 假如 nums[src] 即是 val,则只移动 src 指针,dst 指针保持稳定。
返回结果:
- 遍历完成后,dst 指针的值即为不即是 val 的元素数目。
- 返回 dst 即可。
标题要点
原地操纵:不增长额外空间,直接在原数组上修改。
双指针:使用两个指针遍历数组,一个纪录结果,一个用于遍历。
次序可变:输出元素可不必保持原次序。
返回数目:终极返回非目标值的元素数目。
完备代码(C语言)
- int removeElement(int* nums, int numsSize, int val)
- {
- int dst,src = 0;
- while(src < numsSize)
- {
- //src的值为val,src往后走
- //src的值不为val,src赋值给dst,src和dst都往后走
- if(nums[src] != val)
- {
- nums[dst] = nums[src];
- dst++;
- }
- src++;
- }
- return dst;
- }
复制代码 兄弟们共勉 !!!
码字不易,求个三连
抱拳了兄弟们!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |