CODE 53: Remove Duplicates from Sorted Array II

来源:互联网 发布:构件柱模板的算法 编辑:程序博客网 时间:2024/06/06 14:06

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

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

Your function should return length = 5, and A is now [1,1,2,2,3].

public int removeDuplicates(int[] A) {// IMPORTANT: Please reset any member data you declared, as// the same Solution instance will be reused for each test case.if (A.length <= 0) {return 0;}int length = A.length;int cur = 0;int nxt = 1;boolean morethan2 = false;for (; nxt < A.length; nxt++) {if (A[nxt] != A[nxt - 1]) {A[cur] = A[nxt - 1];cur++;morethan2 = false;} else if (!morethan2) {A[cur] = A[nxt - 1];cur++;morethan2 = true;} else {length--;}}A[cur] = A[nxt - 1];return length;}