package simpleproblems;

import java.util.ArrayList;
import java.util.Arrays;

public class RemoveDuplicates {
	public static void removeWithSwap(int[] nums) {  // Better method with 2 pointer swapping.
		int noDup = 0;
		for (int i=1; i<nums.length; i++) {
			if (nums[i] != nums[noDup]) {
				noDup ++;
				nums[noDup]  = nums[i];
			}
		}
		nums = Arrays.copyOfRange(nums, 0, noDup + 1);
		System.out.println(Arrays.toString(nums));
	}
	
	public static void removeDuplicates(ArrayList<Integer> nums) {  // Remove duplicates by deleting.
		int i = 0;
		while (i <= nums.size() - 2) {
			if (nums.get(i).equals(nums.get(i+1))) {
				nums.remove(i+1);  // It is more efficient to use linked list.
			} else {
				i++;
			}
		}
	}

	public static void main(String[] args) {
		int[] test = {1,2,2,3,3,3,4,5,6};
		RemoveDuplicates.removeWithSwap(test);
	}
}
