【LeetCode】27. 移除元素
题目:27. 移除元素
解题思路
- 给定一个数组,以及一个需要删除的值;要求在 O(1) 的空间复杂度中完成
- 可考虑采用快慢指针的方式,left 用于记录当前需要进行替换的元素,right 指针用于遍历整个数组
- 当 right 指针所指的值是待删除元素时,那么 right 右移,left 不动即可
- 若不是,那么将 right 所指值赋值给left即可
- 当 left 和 right 指向同一位置是否有影响?当前 right 所指值不需要删除,所以将 right 所指位置的值赋值给 left,即将当前位置的元素赋值给当前元素,自己替换自己,不影响结果。
# Java代码实现
class Solution {
public int removeElement(int[] nums, int val) {
if(nums == null || nums.length == 0){
return 0;
}
int left = 0;
for(int right=0; right<nums.length; right++) {
if(nums[right] != val) {
nums[left] = nums[right];
left++;
}
}
return left;
}
}
```java class Solution { public int removeElement(int[] nums, int val) { int left = 0, right = 0; while(right < nums.length) { if(nums[right] != val) { nums[left] = nums[right]; left++; right++; } else { right = right + 1; } } return left; } } ```
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】