[面试算法]有一无符号整型数组,大小为10, 初始的数值随机,但在[0, 99]之间。请用C语言写一个过滤程序,令数组内的数据互不相等。
来源:互联网 发布:电脑版淘宝客服打不开 编辑:程序博客网 时间:2024/05/19 05:38
写了个算法实现,就想做个记录。以后有时间测试下正确性,以及是否有更好的思路。
//有一无符号整型数组,大小为10, 初始的数值随机,但在[0, 99]之间。请用C语言写一个过滤程序,令数组内的数据互不相等。//说明://1.若数组内有相等的数据,可令某一数值加1或减1作出偏移,直至不等为止。//2.数组内的数据只能在[0, 99]之间。//3.数组第一次出现的数据保持不变,以后再次出现才进行相应的修改。void GenNumber( unsigned int src[] , int num ){unsigned int ALERT_FLAG = 100;//标志已经不是第一次出现了unsigned int arr[100];memset( arr, 0 , sizeof(arr) );for ( int n = 0; n < num; n++ ){arr[src[n]]++;//标志已经出现过}for ( int n = 0; n < num; n++ ){if ( arr[src[n]] > 1 && arr[src[n]] != ALERT_FLAG ){arr[src[n]] = ALERT_FLAG;continue;}if ( arr[src[n]] == ALERT_FLAG ){unsigned int newValue = ++src[n];while( arr[newValue] && newValue <= 99 ){newValue = ++src[n];}if (src[n] > 99){src[n] = 99;newValue = --src[n];while( arr[newValue] ){newValue = --src[n];}}arr[newValue]++;}}}void main(){ unsigned int arr[] = { 1, 3, 5, 3, 5, 3, 11 };// unsigned int arr[] = { 1, 3, 5, 99, 99, 99, 11 };//unsigned int arr[] = { 98, 98, 98, 99, 99, 99, 11 };GenNumber(arr, sizeof(arr)/sizeof(*arr));system("puse");}
0 0
- [面试算法]有一无符号整型数组,大小为10, 初始的数值随机,但在[0, 99]之间。请用C语言写一个过滤程序,令数组内的数据互不相等。
- 有序整型数组A,大小为n,请给出一个O(n)的算法,删除重复元素,O(1)空间
- 比较一个数组内的数据是否相等
- 有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片所有的白色不透明(0xffffffff)像素点的透明度调整为50%。
- 有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片所有的白色不透明(0xffffffff)像素点的透明度调整为50%。
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{
- 一个字符为0~9的字符串转换成整型数组中数值的对应的形式
- 【C语言】写冒泡排序可以排序一个整型数组。
- 设定义一个类 整型数组的大小,表示可放元素的个数整型数组当前的元素个数,初始应为0,当elem等于size时,数组满
- C语言:写一个函数,使给定的一个3x3二维整型数组转置,即行列互换
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
- 【c语言】数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
- c语言,指针和数组大小之间的关系
- LeetCode 454. 4Sum II--在四个等长的数组中,找到有多少个四元组的数值之和为0(每个数组中各占一个元素)
- 如何只用一个大小为10的数组或列表来排序1000个随机整数?
- 找出两个已排序且同序大小相等的数组的中位数C语言
- C语言 有符号整型 补码表示的小陷阱
- Java 串行化技术_Serializable
- 详细讲解C++ 类的继承
- java学习第六天
- Maximum Depth of Binary Tree
- 从普通交换机的转发流程看Openflow交换机
- [面试算法]有一无符号整型数组,大小为10, 初始的数值随机,但在[0, 99]之间。请用C语言写一个过滤程序,令数组内的数据互不相等。
- linux IPC-消息队列 的内核限制
- MP3播放器1.0版本
- OJ_1135
- mysql系列:数据库优化
- 调用操作符和函数对象
- linux进程间通信4——消息队列
- modify firefox google search engine
- MFC获取系统当前目录