1. 程式人生 > >LeetCode 80. Remove Duplicates from Sorted Array II 解題報告

LeetCode 80. Remove Duplicates from Sorted Array II 解題報告

80. Remove Duplicates from Sorted Array II

My Submissions Total Accepted: 66554 Total Submissions: 207698 Difficulty: Medium

Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?

For example,
Given sorted array nums = [1,1,1,2,2,3],

Your function should return length = 5

, with the first five elements of nums being 1122 and 3. It doesn't matter what you leave beyond the new length.

Subscribe to see which companies asked this question

Show Tags Have you met this question in a real interview?  Yes   No

    這道題需要在傳入陣列的基礎上改成去重之後的。其實,當前有多少個不重複的元素,那麼下一個不重複的元素直接覆蓋到這個索引位就可以了。

    我的AC程式碼

public class RemoveDuplicatesfromSortedArrayII {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] a = { 1, 1, 1, 2, 2, 3 };
		System.out.println(removeDuplicates(a));
		int[] b = { 1, 1, 1, 1, 3, 3 };
		System.out.println(removeDuplicates(b));
	}

	public static int removeDuplicates(int[] nums) {
		if (nums.length == 0) {
			return 0;
		}

		int sum = 1, cnt = 1, pre = nums[0];

		for (int i = 1; i < nums.length; i++) {
			if (pre == nums[i]) {
				cnt++;
				if (cnt <= 2) {
					sum++;
					nums[sum - 1] = nums[i];
				}
			} else {
				pre = nums[i];
				cnt = 1;
				sum++;
				nums[sum - 1] = nums[i];
			}
		}
		return sum;
	}
}