leetcode 27. 移除元素

news/2024/10/28 22:34:19/

给你一个数组 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]思路:和leetcode26题"删除有序数组中的重复项”思路类似,定义双指针,判断右指针的值是否与val值相同,如果相同则将右指针向右移动一格,如果不同则将右指针值传给左指针(因为左右指针都是从第一个位置开始的,所以此时左指针指的是与val相同的值,也就是说此时左指针指的val值被覆盖),重复上述操作,最后输出左指针之前的元素。

C++:

class Solution {
public:int removeElement(vector<int>& nums, int val) {int n =nums.size();int j=0;for (int i=0;i<n;i++){if (nums[i] !=val){nums[j]=nums[i];j++;}}return j;}
};

Python:

class Solution:def removeElement(self, nums: List[int], val: int) -> int:l,r = 0,0while r < len(nums):if nums[r] != val:nums[l] = nums[r]l+=1r+=1return l

这里附上leetcode26题链接

leetcode 26. 删除有序数组中的重复项_小梁今天敲代码了吗的博客-CSDN博客


http://www.ppmy.cn/news/68859.html

相关文章

JSP基于网络超市商品销售管理系统的设计与实现(源代码+论文)

随着互联网日益深入我们的生活&#xff0c;网上商品销售的方式也逐渐被人们所接受&#xff0c;因而集成销售管理功能的网上销售系统也显得更加重要而实用。鉴于此&#xff0c;本课题设计了基于网络超市的商品销售管理系统。首先&#xff0c;论文简单介绍了商品销售管理系统的产…

Servlet3.0 新特性全解

Servlet3.0新特性全解 tomcat 7以上的版本都支持Servlet 3.0 Servlet 3.0 新增特性 注解支持&#xff1b;Servlet、Filter、Listener无需在web.xml中进行配置&#xff0c;可以通过对应注解进行配置&#xff1b;支持Web模块&#xff1b;Servlet异步处理&#xff1b;文件上传AP…

【程序员的职场】

随着信息技术的不断发展&#xff0c;程序员这个职业也越来越受到人们的关注。作为一个程序员&#xff0c;面对日新月异的技术变迁和高速发展的市场需求&#xff0c;我们需要具备强大的技术能力和快速学习的能力&#xff0c;以保持自己在职场中的竞争力。 作为一个程序员&#…

scrollIntoView的基本定义、以及Vue3、vue2中使用: 点击导航滚动到对应区域。

1. 基本定义 MDN 关于scorllIntoView的介绍 Element 接口的 scrollIntoView() 方法会滚动元素的父容器&#xff0c;使被调用 scrollIntoView() 的元素对用户可见。 scrollIntoView()scrollIntoView(alignToTop)scrollIntoView(scrollIntoViewOptions) 1. alignToTop 可选 alig…

[译] Flutter 3.10 的新功能

[译] Flutter 3.10 的新功能 原文 https://medium.com/flutter/whats-new-in-flutter-3-10-b21db2c38c73 无缝的Web和移动端集成&#xff0c;Impeller稳定版的突破性图形性能&#xff0c;以及更多 欢迎使用Flutter 3.10&#xff01;我们非常期待展示我们令人惊叹的Flutter社区所…

oracle用户账号被锁的问题

oracle数据库用户被锁 select username,account_status,lock_date from dba_users; select RESOURCE_NAME,RESOURCE_TYPE,LIMIT from dba_profiles where resource_name like FAILED_LOGIN_ATTEMPTS% AND profileDEFAULT; 3&#xff0c;解锁方法   ALTER USER USER_NAME…

方案设计——食物测温仪方案

食物测温仪&#xff0c;在食物烹饪时&#xff0c;温度和时间至关重要&#xff0c;所以食物测温仪孕育而生&#xff0c;当用户使用时只需将食物测温仪的探头插入食物中&#xff0c;即刻能得到当前食物温度数据&#xff0c;不必用经验判断。做为一款食物测温仪&#xff0c;运用场…

springboot + vue3实现视频播放Demo

文章目录 学习链接前言ffmpeg安装ffmpeg配置环境变量分割视频文件 后台配置WebConfig 前端代码video.js示例安装依赖视频播放组件效果 Vue3-video-play示例安装依赖main.js中使用视频播放组件效果 学习链接 ffmpeg官网 长时长视频java存储及vue播放解决方法 【 攻城略地 】vue…