LeetCode 27. Remove Element 题解 —— Java
来源:互联网 发布:java中的访问修饰符 编辑:程序博客网 时间:2024/05/21 14:59
题目链接:https://leetcode.com/problems/remove-element/#/description
题目要求:删除数组中的指定数,返回删除该数之后的数组长度
思路:使用一个标记“指针”记录下一个不会被删除的元素应该保存的位置。
实例:原数组为2,3,3,3,4,5,3,6 指定要删除的数字为3
(使用“|”来表示上述提到的标记指针,“|”之后的数所处的位置为下一个下一个不会被删除的元素应该保存的位置)
(红色字体表示下一步要处理的数字)
过程如下:
(1)数组的初始状态:| 2,3,3,3,4,5,3,6
(2)数组的第一个数字是2,不应该删除,因此标记指针后移一位,数组变为2, | 3,3,3,4,5,3,6(该步骤其实也有一次赋值,将数字2赋值到它的正确位置,也就是第一个位置)
(3)数组的第二个数字是3,应该删除,因此标记指针不动,表示下一个不应该删除的数应该保存到 | 后面的位置(也就是被删掉的3的位置),数组状态依旧为2, | 3,3,3,4,5,3,6
(4)数组的第三个数字是3,应该删除,因此标记指针还不动,表示下一个不应该删除的数应该保存到 | 后面的位置,数组的状态依旧为2, | 3,3,3,4,5,3,6
(5)数组的第四个数字是3,应该删除,因此标记指针还不动,表示下一个不应该删除的数应该保存到 | 后面的位置,数组的状态依旧为2, | 3,3,3,4,5,3,6
(6)数组的第五个数字是4,不应该删除,因此将4复制到它的正确位置,也就是 | 后面的位置,同时标记指针后移一位。数组的状态变为2, 4, | 3,3,4,5,3,6
(7)数组的第六个数字是5,不应该删除,因此将5复制到它的正确位置,也就是 | 后面的位置,同时标记指针后移一位。数组的状态变为2, 4, 5, | 3,4,5,3,6
(8)数组的第七个数字是3,应该删除,因此标记指针不动,表示下一个不应该删除的数应该保存到 | 后面的位置,数组的状态为2, 4, 5, | 3,4,5,3,6
(9)数组的第八个数字是6,不应该删除,因此将6复制到它的正确位置,也就是 | 后面的位置,同时标记指针后移一位。数组的状态变为2, 4, 5, 6, | 4,5,3,6
至此,处理过程结束,| 所处的位置的下标,即为删除指定数字之后,数组的长度。
Java代码如下:
public class Solution {// 删除数组中的指定值 public int removeElement(int[] nums, int val) { int rightIndex = 0; // 使用一个“指针”记录下一个不该删除的元素应该保存的位置 for(int i=0; i<nums.length; i++){ if(nums[i] != val){ // 遍历数组时,如果当前数字不是val,也就是不该删除,将它赋值到它应该保存到的位置,然后将rightIndex后移一位 // 换句话说,如果当前数字是val,那么当前数字应该被之后的某个数覆盖掉,所以这种情况下rightIndex指针不必移动。 nums[rightIndex] = nums[i]; rightIndex ++; } } // 遍历结束后,rightIndex的值即为删除指定值之后,数组中有效的元素个数 return rightIndex; }}
- LeetCode 27. Remove Element 题解 —— Java
- LeetCode题解——Remove Element
- leetcode题解-27. Remove Element
- LeetCode题解:Remove Element
- 【LeetCode题解】Remove Element
- LeetCode题解:Remove Element
- LeetCode题解:Remove Element
- [LeetCode] Remove Element题解
- Leetcode题解14 27. Remove Element
- Leetcode:27. Remove Element(JAVA)
- leetcode-java-27. Remove Element
- (Java)LeetCode-27. Remove Element
- [LeetCode-Java]27. Remove Element
- [LeetCode] 27. Remove Element java
- [leetcode]27.Remove Element(Java)
- LeetCode-27. Remove Element(Java)
- leetcode 题解 || Remove Element 问题
- LeetCode 题解(229) : Remove Element
- android studio 导入外部库文件,以及将项目中module变成library引用依赖
- HDU3786-找出直系亲属(DFS)
- MVC框架模式
- Android性能优化之渲染优化
- Android NDK(三):JNI 字符串
- LeetCode 27. Remove Element 题解 —— Java
- hdu 1026
- JAVA回顾
- 算法分析与设计第五周习题:95. Unique Binary Search Trees II
- python tile函数
- C语言实现TCP服务器---模型(二)
- hdu 2612 Find a way
- 最长上升子序列(LIS) -最长公共子序列(LCS)
- 《ACM程序设计》书中题目W