LeetCode 27 移除元素 题解
力扣链接:27.移除元素
要求:不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
方法一:
思路:利用双指针,头指针指向首元素,尾指针指向最后一个元素。循环中begin指向的值等于val时,判断end所指向的值。
需要注意的是循环条件中的" = “, 如果缺少” = "出现一个元素的情况下不会进入循环会出现错误,如图:
具体代码实现如下:
int removeElement(int* nums, int numsSize, int val){int begin = 0,end = numsSize - 1; //定义两个指针while(begin <= end) //循环条件begin <= end (可能存在只有一个元素的情况所以得加上" = "){if(nums[begin] != val) //头指针不等于val向后走{begin++;}//如果遇见要移除的值并且end所指向的值不等于valelse if(nums[begin] == val && nums[end] != val) {nums[begin] = nums[begin] ^ nums[end]; //交换两个元素nums[end] = nums[begin] ^ nums[end]; nums[begin] = nums[begin] ^ nums[end];end--; //尾指针向前移动numsSize--; //数组大小减一begin++; //交换元素后头指针向后移动}else{ //如果遇见要移除的值并且end所指向的值等于valend--; //尾指针向前移动(寻找不等于val的元素)numsSize--; //数组大小减一}}return numsSize; //返回移除后的数组大小
}
方法二:
思路:不利用双指针,直接循环判断。定义一个变量cnt用于记录数组中val出现的次数,如果遇见val则cnt加一,否则把该值放在数组前面非val的位置 。最后返回原数组大小减去val出现次数(cnt)。
详细操作:以题目中示例1为例
第一步:
第二步:
第三步:
第四步:
具体代码实现如下:
int removeElement(int* nums, int numsSize, int val){int cnt = 0;for(int i = 0; i < numsSize; ++i){if(nums[i] == val){cnt++;}else{nums[i-cnt] = nums[i];}}return numsSize-cnt;
}
LeetCode 27 移除元素 题解相关推荐
- lrange是取出所有值并移除么_图解双指针 | LeetCode 27. 移除元素
题目描述 原题链接:LeetCode 27. 移除元素 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在 ...
- LeetCode 27.移除元素
原题链接 /** @lc app=leetcode.cn id=27 lang=cpp** [27] 移除元素标签:拷贝覆盖主要思路是遍历数组nums,每次取出的数字变量为num,同时设置一个下标an ...
- LeetCode 27移除元素28实现strStr()29两数相除
维护幸苦,如有打卡欢迎关注公众号bigsai回复进群,如有帮助欢迎点赞支持! 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长 ...
- 9. Leetcode 27. 移除元素 (数组-同向双指针-快慢指针)
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度.不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组.元素 ...
- [leetcode]27.移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组. ...
- LeetCode 27.移除元素 思考分析
题目 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数 ...
- leetcode 27. 移除元素(双指针)
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组. ...
- LeetCode 27.移除元素
文章目录
- Leetcode 704.二分查找 27.移除元素 代码随想录day1
本系列目的在于跟练代码随想录,以及记录自己在数据结构与算法方面的一些学习 704.二分查找 其实之前自己在随便刷题的时候看过这道题目,就是一个纯新手的大状态,第一次听到二分查找这样的东西,然后跟着题解 ...
最新文章
- 如何用RHEL System Role把Postfix安装和配置自动化?
- 【收藏】生产订单业务流程
- PHP用单例模式实现一个数据库类
- Visual Studio 2010 sp1
- deepin应用分发_Deepin Dock隐藏功能等功能说明
- ubuntu16.04安装 java JDK8
- iPhone 的续航有望加长!749 元的“磁吸充电宝”你会买吗?
- Java网络编程(TCP协议-练习-上传文本文件)
- Opencv环境配置
- 中标麒麟服务器中安装达梦数据库(DM7)的具体步骤
- 鸟哥linux——Ext2文件系统基本原理
- 使用Unity3D视频转换器TheoraConverter.NET 1.1 Setup转换视频格式为ogv并播放视频
- python-多元线性回归模型
- WIFI和路由器密码破解的方法
- linux6.5 xmanager配置,CentOS6.5安装Xmanager远程桌面
- java中web错误返回码,关于在java程序里调用webservice报500返回码的有关问题
- three.js(6):屏幕点击与鼠标的交互(Raycaster的用法)
- listview(retrofit)
- 借鉴FCoin商业模式,写了一份白皮书去参赛
- Excel一键将-替换为--的批量操作
热门文章
- 【ElasticSearch系列】ES简介及安装
- 3D视觉——线激光测量胶水高度
- PS186:你给我翻译翻译什么叫做惊喜
- c语言对称矩阵的压缩存储_C++实现对称矩阵的压缩存储 | 术与道的分享
- Sorry Redis Desktop Manager Crashed的解决办法
- 微信小程序开发者工具怎么使用Less、Sass
- python做兼职_“隐形贫困者”自学Python做副业,教你如何月入10000+
- 微信商城系统开发具体流程
- C# 递归的应用 TreeView递归绑定数据
- IT类公司世界500强企业