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


80. Remove Duplicates from Sorted Array II My Submissions
Question
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
Discuss
この問題は,伝達配列に基づいて重さ除去後に変更する必要がある.実際には、現在重複しない要素がいくつあるかは、次の重複しない要素がこのインデックスビットに直接上書きされます.
私の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;
	}
}