27. 移除元素
描述
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。
假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:
更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
返回 k。
解题思路
1、暴力破解-类似冒泡排序,将val元素 放到后面
2、双指针(快慢指针和左右指针)
快慢指针
class Solution {
public int removeElement(int[] nums, int val) {
// 快慢指针
int slowIndex = 0;
for (int fastIndex = 0; fastIndex < nums.length; fastIndex++) {
if (nums[fastIndex] != val) {
nums[slowIndex] = nums[fastIndex];
slowIndex++;
}
}
return slowIndex;
}
}
左右指针
public class RemoveElement {
public static void main(String[] args) {
int[] nums = {3,2,2,2,3};
int val = 3;
new RemoveElement().removeElement(nums, val);
}
public int removeElement(int[] nums, int val) {
int left = 0;
int right = nums.length -1;
while(left <= right){
if(nums[left] == val){
if(nums[right] != val){
nums[left] = nums[right];
nums[right] = val;
left ++;
}
right --;
} else {
left ++;
}
}
return left;
}
}
941

被折叠的 条评论
为什么被折叠?



