LeetCode -- Remove Element
Question:
Given an array and a value, remove all instances of that value in place and return the new length.
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
Analysis:
从一个给定数组中删除指定的val,然后返回剩余数组的长度。
有两种思路:
思路一:设置一个t标记,用紧邻的后面位置且不为val的数组值代替该位置的。
思路二:设置两个指针,一个从最末尾数起,一个从最开始数起,从头遍历数组,遇到等于val的就用最后面不为val的值代替,到两个指针相遇时结束。
Answer:
public class Solution { public int removeElement(int[] nums, int val) { int l = nums.length; int t = 0; for(int i=0; i<nums.length; i++) { if(nums[i] == val) t++; if(i-t>=0 && nums[i] != val) nums[i-t] = nums[i]; else continue; } return l - t; } }