27. Remove Element

LeetCode

Approach 1: Two Pointers, Time complexity: O(2*N)=O(N).

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public int removeElement(int[] nums, int val) {
if(nums.length==0) return 0;
int j=-1;
for(int i=0;i<nums.length;i++){
while(i<nums.length&&nums[i]==val) i++;
if(i>=nums.length) break;
nums[++j]=nums[i];
}
return ++j;
}
}

Approach 2: Two Pointers - when elements to remove are rare, Time complexity: O(N)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public int removeElement(int[] nums, int val) {
int i=0,n=nums.length;
while(i<n){
if(nums[i]==val){
nums[i]=nums[n-1];
n--;
}else{
i++;
}
}
return n;
}
}

0%