Link: https://oj.leetcode.com/submissions/detail/9751364/
这题应该很简单,但没过。再做。
我的思路:
先对数组排序,然后找到element。//不需要这样做。
Approach I: 不等就复制。相等跳过。
Time: O(n)
public class Solution {
public int removeElement(int[] A, int elem) {
int len = 0;
for(int i = 0; i < A.length; i++){
if(A[i] != elem){
A[len] = A[i];
len++;
}
}
return len;
}
}
Approach II: 相等就从数组最后取元素。(比方法I难理解)。
Time: O(n)
public class Solution {
public int removeElement(int[] A, int elem) {
int len = A.length - 1;
for(int i = 0; i <=len; i++){
if(A[i] == elem){
A[i] = A[len];
len--;//A[len] is considered
i--;//because we have i++ in for loop
}
}
return len+1;
}
}