LeetCode 80. Remove Duplicates from Sorted Array II

原题链接在这里:https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/

题目:

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.

题解:

类似Remove Duplicates from Sorted Array不同就是允许一次重复,加一个limit初始为0, 当limit小于1的时可以赋值到nums[count], 同时limit++, limit等于1时跳过。

Time Complexity: O(nums.length). Space: O(1).

AC Java:

 1 public class Solution {
 2     public int removeDuplicates(int[] nums) {
 3         if(nums == null || nums.length == 0){
 4             return 0;
 5         }
 6         
 7         int count = 1;
 8         int limit = 0;
 9         for(int i = 1; i<nums.length; i++){
10             if(nums[i] != nums[i-1]){
11                 nums[count++] = nums[i];
12                 limit = 0;
13             }else if(limit < 1){
14                 nums[count++] = nums[i];
15                 limit++;
16             }
17         }
18         return count;
19     }
20 }

 

posted @ 2015-09-02 13:01  Dylan_Java_NYC  阅读(308)  评论(0编辑  收藏  举报