博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
80. Remove Duplicates from Sorted Array II
阅读量:5050 次
发布时间:2019-06-12

本文共 1800 字,大约阅读时间需要 6 分钟。

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.

 

// 时间复杂度O(n)  1 class Solution 2 { 3 public: 4     int removeDuplicates(vector
& nums) 5 { 6 if (nums.size() <= 2) // 小于俩数直接返回 7 { 8 return nums.size(); 9 }10 11 int index = 2; // 代表已经去重的nums下标12 13 for (int i = 2; i < nums.size(); ++i) // 从第三个数开始遍历 因为允许两个数重复14 {15 if (nums[i] != nums[index - 2]) // 如果此时index之前两个数不与nums[i]重复就覆盖index这个单元16 {17 nums[index++] = nums[i];18 }19 }20 21 return index;22 }23 };

 

1 // 时间复杂度 0(n) 2 class Solution 3 { 4 public: 5     int removeDuplicates(vector
& nums) 6 { 7 int index = 0; 8 const int n = nums.size(); 9 10 /*11 index和i均从0开始 仅当出现三个重复数时才只增加i的值12 */13 for (int i = 0; i < n; ++i)14 {15 if (i > 0 && i < n - 1 && nums[i - 1] == nums[i] && nums[i] == nums[i + 1])16 {17 continue;18 }19 20 nums[index++] = nums[i];21 }22 23 return index;24 }25 };

 

1 // 时间复杂度 0(n) 2 class Solution 3 { 4 public: 5     int removeDuplicates(vector
& nums) 6 { 7 int index = 0; 8 9 for (auto n : nums)10 {11 if (index < 2 || n > nums[index - 2])12 {13 nums[index++] = n;14 }15 }16 17 return index;18 }19 };

 

转载于:https://www.cnblogs.com/lijiatu/p/5361216.html

你可能感兴趣的文章
Mysql性能调优
查看>>
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>
javascript学习---BOM
查看>>
IOS-每个程序员的编程之路上都应该看这11本书
查看>>
自定义tabbar(纯代码)
查看>>
extjs fieldset 和 radio
查看>>
小程序底部导航栏
查看>>
Codeforces Gym101505G:Orchard Division(扫描线+线段树第k大)
查看>>
ibatis学习笔记
查看>>
18-ES6(1)
查看>>
poj1611 简单并查集
查看>>
tensorflow实现迁移学习
查看>>
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>
关于Redis处理高并发
查看>>
C# BS消息推送 SignalR介绍(一)
查看>>
asp.net core 系列 16 Web主机 IWebHostBuilder
查看>>
WPF星空效果
查看>>
WPF Layout 系统概述——Arrange
查看>>
PIGOSS
查看>>