80. 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 1, 1, 2, 2 and 3. It doesn't matter what you leave beyond the new length.
题目:将有序数组中出现次数大于2的数更改为出现2次,返回最终数组的长度
思路:因为题目给的是有序数组,所以依次序将每一种数的出现次数记录在sum数组中,如果出现次数大于2就删除后面出现的重复数。

/**
 * @param {number[]} nums 已知数组
 * @return {number}
 */
     var removeDuplicates = function(nums) {
     var i , j, n;
     var sum = [];
     var len = nums.length;
     for(i=0;i<len;i++)
         sum[i] = 1;
     for(i=0,j=0;i<len;i++)
     {
         if(nums[i] == nums[i+1])
             sum[j] = Number(sum[j])+1;
         else j++;
     }
     for(i=0,n=0;i<nums.length;i++)
     {
         j = sum[n++];
         if(j>2)
         {
             nums.splice(i+2,j-2);
             i++;
         }
         else if(j==2)
             i++;
     }
     return nums.length;
   };
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容