有序整型数组A,大小为n,请给出一个O(n)的算法,删除重复元素,O(1)空间
来源:互联网 发布:windows禁止arp 编辑:程序博客网 时间:2024/05/22 21:10
/*
* 给定排好序的整型数组A,大小为n,请给出一个O(n)的算法,删除重复元素,且不能使用额外空间。
*
* 提示:既然有重复,必有冗余空间。将元素放入数组的前面,并记录下次可放位置,不断向后扫描即可。
*/
解法如提示所示,代码如下~
#include <iostream>using namespace std;int arr[] = {1,2,3,3,3,3,4,5,5,5,6,7,7,7,8};//int arr[] = {1,2,3,4,5,6,7,8};/* *大小为n的数组,删除其中的重复元素 *返回删除重复元素后,数组中剩下的元素个数 */int solve(int n){if(n < 0)//检查参数return -1; int candidate = arr[0]; //取数组第一个元素int count = 1; //去除重复元素后,最后数组的元素个数for(int i=1; i<n; ){if(arr[i] != candidate){arr[ count++ ] = candidate = arr[i]; //更新candidatei++;}else //出现重复元素{int j = i;while(j < n && arr[j] == candidate ) j++; //向后找到第一个不相同的元素,或者遍历至数组末尾if(j < n) //j下标指向的数组元素存在,且不等于candidate{arr[count++] = candidate = arr[j];}i = j+1;}}return count;}int main(){int n = sizeof(arr) / sizeof(int);int res = solve(n);//查看结果for(int i=0; i<res; i++)cout<<arr[i]<<" ";cout<<endl;}
欢迎读者留言探讨~O(∩_∩)O~
- 有序整型数组A,大小为n,请给出一个O(n)的算法,删除重复元素,O(1)空间
- 一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间。
- 谷歌面试题--一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间
- 对于非负整数0,1,2,....n-1,随机放入一个大小为n的一维数组中,调整元素顺序,辅助空间为O(1)
- 时间复杂度为o(N)查找1至N-1构成的a[N]重复元素
- 时间复杂度为o(N)查找1至N-1构成的a[N]重复元素
- 时间复杂度为o(N)查找1至N-1构成的a[N]重复元素
- 《数据结构》2.10设计一个算法,删除顺序表中值为item的元素,要求算法的时间复杂度是O(n),空间复杂度是O(1)
- 实现一个排序算法,对0~n-1范围内的n个不重复的无序数组进行排序,时间复杂度为O(n),空间复杂度为O(1)。
- 取值为[1,n-1] 含n 个元素的整数数组至少存在一个重复数,O(n) 时间内找出其中任意一个重复数
- 试设计一个算法,将数组A(0..n-1)中的元素循环右移k位,并要求空间复杂度为O(1),时间复杂度为O(n)。
- [每日练习]数组有N+M个数字, 数字的范围为1 ... N, 打印重复的元素, 要求O(M + N), 不可以用额外的空间
- 如何判断一个整数数组中是否有重复元素?要求时间复杂度O(n),空间复杂度O(1)
- 如何判断一个整数数组中是否有重复元素?要求时间复杂度O(n),空间复杂度O(1)
- 如何判断一个整数数组中是否有重复元素?要求时间复杂度O(n),空间复杂度O(1)
- 给出两个长度为N的有序数组A和B 给出求中位数的算法
- C/C++面试之算法系列--时间复杂度为o(N)查找1至N-1构成的a[N]重复元素
- 一个含n个元素的整数数组至少存在一个重复数, 请编程实现,在O(n)时间内找出其中任意一个重复数。
- PHP调试工具Xdebug安装配置教程
- rhel6系统启动过程故障排错处理
- soj 1763. 传球游戏
- 2012成长
- 联合体+位域,实现位操作,并可以整体读出
- 有序整型数组A,大小为n,请给出一个O(n)的算法,删除重复元素,O(1)空间
- .NET 发展历程
- ios plist文件的读写
- java位运算
- 有序整型数组A,判断A中是否存在两个数之和等于X,时间O(n)
- Ubuntu12.04中打开Qt creator,提示无法覆盖文件 /home/xiaofeng/.config/QtProject/qtversion.xml : Permission denied
- 无论什么时候开始学习都不会太迟
- 系统
- 信息科学部