首页 > 其他分享 >移除元素

移除元素

时间:2023-04-03 10:05:04浏览次数:22  
标签:src val nums dst 元素 数组 移除

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

输入:nums = [3,2,2,3], val = 3

输出:2, nums = [2,2]

解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/remove-element

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

来源:力扣(LeetCode)

做题思路:按照以前的思路我们可以先开一个新的数组空间,将不是val的元素移至新数组中去,但是该题规定了“不要使用额外的数组空间”,我们可以采用元素覆盖法来解决。大体的思路如下:

1.先定义src,dst两个变量,其中src表示数组的可移动下标,dst表示可覆盖元素的可移动下标。

2.用src去一个一个的移动,找到不是val的值给dst,不管怎么样,src是一直向后挪的,而对于dst只有src将不是val的值给他后,才可以向后挪。

int removeElement(int* nums, int numsSize, int val){
int src=0,dst=0;
while(src<numsSize)
{
    if(nums[src]!=val)
    {
        nums[dst]=nums[src];
        src++;
        dst++;
    }
    else{
        src++;
    }
}
return dst;
}

标签:src,val,nums,dst,元素,数组,移除
From: https://blog.51cto.com/u_15806064/6165555

相关文章

  • 215. 数组中的第K个最大元素
    参考:https://leetcode.cn/problems/kth-largest-element-in-an-array/solutions/19607/partitionfen-er-zhi-zhi-you-xian-dui-lie-java-dai-/https://www.bilibili.com/video/BV1La411J7q9/?spm_id_from=333.999.0.0classSolution{publicintfindKthLargest(int[]n......
  • 453.最小操作次数使数组元素相等
    最小操作次数使数组元素相等给你一个长度为n的整数数组,每次操作将会使n-1个元素增加1。返回让数组所有元素相等的最小操作次数。示例1:输入:nums=[1,2,3]输出:3解释:只需要3次操作(注意每次操作会增加两个元素的值):[1,2,3]=>[2,3,3]=>[3,4,3]=>[4,4,4]......
  • 347.前 K 个高频元素
    给定一个非空的整数数组,返回其中出现频率前k高的元素。示例1:输入:nums=[1,1,1,2,2,3],k=2输出:[1,2]示例2:输入:nums=[1],k=1输出:[1]classcmp{public:booloperator()(conststd::pair<int,int>&a,conststd::pair<int,int>&b){......
  • Python遍历时删除元素问题(附深拷贝与浅拷贝介绍)
    问题有时候,我们希望用Python遍历一个列表(或其他可迭代对象),如果其中有我们不需要的元素就把它删除并继续遍历。如以下代码段,我们本希望打印1、3,可最后却只打印了1。a=[1,2,3]foriina:ifi==2:a.remove(i)else:print(i)分析其实,之所以......
  • 算法随想Day51【单调栈】| LC739-每日温度、LC496-下一个更大元素Ⅰ
    LC739.每日温度vector<int>dailyTemperatures(vector<int>&temperatures){intsize=temperatures.size();vector<int>result(size,0);vector<int>sta;sta.push_back(0);for(inti=1;i<size;++i){......
  • 算法随想Day52【单调栈】| LC503-下一个更大元素Ⅱ、LC42-接雨水
    LC503.下一个更大元素Ⅱ对于“每日温度”,相当于对nums数组,进行了两次遍历。用i%size所得余数作为下标,且循环的圈数为size*2vector<int>nextGreaterElements(vector<int>&nums){intsize=nums.size();vector<int>result(size,-1);vector<int>sta;......
  • DOM元素的操作
           ......
  • html块级元素有哪些
    html块级元素有address、caption、dd、div、dl、dt、fieldset、form、h1、h2、h3、h4、h5、h6、hr、legend、fieldset、li、noframes、noscript、ol、ul、p、pre、table、tbody、td、tfoot、th、thead、tr等,其中,address用来定义地址。  一、html的块级元素<address>定义......
  • html块级元素有哪些
    html块级元素有address、caption、dd、div、dl、dt、fieldset、form、h1、h2、h3、h4、h5、h6、hr、legend、fieldset、li、noframes、noscript、ol、ul、p、pre、table、tbody、td、tfoot、th、thead、tr等,其中,address用来定义地址。  一、html的块级元素<address>定义......
  • 总结的面试题、数组下标为什么从0开始、数组名中存储的是什么、数组的元素如何存储
    系列文章目录文章目录系列文章目录第一题第二题第一题详细解答链接:https://mp.weixin.qq.com/s/N1Mj3DLbFkZeT5hVR05eNA第二题数组的存储:1、数组下标为什么从0开始?下标表示的是这个元素的位置距离首地址的偏移量2、数组名中存储的是什么数组名中存储的是数组在堆中一整块区域......