执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:37 MB, 在所有 Java 提交中击败了46.34%的用户
通过测试用例:113 / 113
思路:用快排的思想,将数组一分为二。
1.当数组为空,直接返回0。
2.当数组不空的时候:i从左往右找要删除的值,j从右往左找要保留的值,判断此时ij范围有没有溢出(即i 3.此时确定i元素的值,若i不是要删除的值,则返回i+1;其余返回i。(注:千万不能写反,比如数组全是要删除的元素)。 class Solution {
public int removeElement(int[] nums, int val) {
if(nums.length == 0)return 0;
int i = 0;
int j = nums.length-1;
while(i < j){
for(; i < j && nums[i] != val; i++){}
for(; i < j && nums[j] == val; j--){}
if(i < j){
int temp = nums[j];
nums[j] = nums[i];
nums[i] = temp;
i++;
j--;
}
}
if(nums[i] != val)return i+1;
return i;
}
}



