题目

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].

原题链接(点我)

解题思路

移除数组中反复次数超过2次以上出现的数,可是能够同意反复2次。

这个题类似Remove Duplicates from Sorted Array,第一个想法非常直接就是计数,超过2次的就忽略,根据这个思路的代码见代码一;

上面的思路可行。可是代码看着比較冗余,推断比較多。再来想想原来的数组,该数组是排好序的。假设一个数出现3次以上,那么必有A[i] == A[i-2]。所以依据这个关系能够写出比較精简的代码二。

详见代码。

代码实现

代码一
class Solution {
public:
int removeDuplicates(int A[], int n) {
if(A==NULL || n<=0) return 0;
int start=1, count = 1, back = A[0];
for(int i=1; i<n; ++i){
if(count<2){
A[start++] = A[i];
if(back != A[i]){
back = A[i];
count = 1;
}else{
++count;
}
}else{
if(A[i] != back){
count = 1;
A[start++] = A[i];
back = A[i];
}else{
++count;
}
}
}
return start;
}
};
代码二
class Solution {
public:
int removeDuplicates(int A[], int n) {
if(A==NULL || n<=0) return 0;
if(n==1) return 1;
int start=1,back = A[1];
for(int i=2; i<n; ++i){
if(A[i] != A[i-2]){
A[start++] = back;
back = A[i];
}
}
A[start++] = back;
return start;
}
};
假设你认为本篇对你有收获,请帮顶。

另外。我开通了微信公众号--分享技术之美,我会不定期的分享一些我学习的东西.

你能够搜索公众号:swalge 或者扫描下方二维码关注我

(转载文章请注明出处: http://blog.csdn.net/swagle/article/details/29822565
)

最新文章

  1. iOS报错[__NSCFNumber length]: unrecognized
  2. shutil复制粘贴和压缩
  3. iOS 单例模式范例
  4. 细说.NET中的多线程 (三 使用Task)
  5. 【Android】[转] Android Handler应设为static
  6. Javascript操作Cookie的脚本 &mdash; CookieHelper
  7. 测试杂感:Bug Bash
  8. Hbase之Exception
  9. 【PHP】phpcms html去除空白
  10. Linux下安装、启动MySQL
  11. UVA 10006 - Carmichael Numbers 数论(快速幂取模 + 筛法求素数)
  12. Google考虑抛弃Cookies机制
  13. 大脑提取每一个体素26领域的matlab代码
  14. 关于UNION和UNION ALL的区别
  15. 如何在MQ中实现支持任意延迟的消息?
  16. Linux系统下apt-get命令无法安装常见软件包?
  17. jQuery汇总
  18. Kafka的通讯协议
  19. Core Animation-2:寄宿图
  20. Oracle12C版本安装步骤

热门文章

  1. Android的数据存储方式概述
  2. ora01940 无法删除当前连接的用户
  3. Ubuntu 16.04 -- 同时配置Nginx(转发)和frp(内网映射)和HTTPS(ca加密) - 端口转发
  4. Xamarin.Forms 调用腾讯地图
  5. TCP/IP协议组随笔
  6. 转: 阿里跨平台移动开发工具Weex
  7. sql习题练习
  8. vue笔记一
  9. matplotlib画图实例:pyplot、pylab模块及作图參数
  10. PLSQL Developer设置技巧