当前位置: 首页 > news >正文

c语言练习86:移除元素

移除元素

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

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

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝
int len = removeElement(nums, val);

// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。
for (int i = 0; i < len; i++) {
    print(nums[i]);
}

示例 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],也会被视作正确答案。

示例 2:

输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,4,0,3]
解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。

提示:

  • 0 <= nums.length <= 100
  • 0 <= nums[i] <= 50
  • 0 <= val <= 10

 代码:

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

相关文章:

  • Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis 电子招标采购系统功能清单
  • VueRouter与expres/koa中间件的关联
  • [Mono Depth/3DOD]单目3D检测基础
  • 【科学文献计量】利用pybibx分析Scopus文献数据集(EDA,N-Grams,Cluster,Network analysis,NLP)
  • MySQL系列---Online DDL
  • 【C++】list基本接口+手撕 list(详解迭代器)
  • 2023年中国水电行业研究报告
  • scrapy针对302请求的处理与重试配置
  • 殡葬用品商城小程序的作用是什么
  • tortoise创建本地仓库
  • 【JavaEE初阶】 volatile关键字 与 wait()方法和notify()方法详解
  • Android Studio 配置Git SVN忽略文件
  • android之TextView自由选择复制
  • 如何建立企业数字化营销体系?使用数字化营销系统助企业升级?
  • 汽车烟雾测漏仪(EP120)
  • Jetson Orin NX 开发指南(7): EGO-Swarm 的编译与运行
  • 使用 Apache Camel 和 Quarkus 的微服务(三)
  • H5逆向之远程RPC
  • Kafka知识补充
  • springboot 配置 filter
  • 国家出口管制工作协调机制办公室部署开展打击战略矿产走私出口专项行动
  • 国家发改委:美芯片药品等领域关税影响全球科技发展,损害人类共同利益
  • 甘肃省政府原副省长赵金云被决定逮捕
  • 国家卫健委:有条件的二级及以上综合医院要开设老年医学科
  • 特色业务多点开花,苏州银行擦亮金融为民底色
  • “用鲜血和生命凝结的深厚情谊”——习近平主席署名文章中的中俄友好故事