判断数组中是否有重复的数字(C++)
2015-12-02 21:55
148 查看
题目:
在一个长度为n的数组里的所有数字都在0到n-1的范围内。
数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。
请找出数组中任意一个重复的数字。
思路:
这个题目解法很多,这里给出一种解法,充分利用了题目的已知信息。
【每个数的范围是 0 - n-1 可能存在多个重复的数字】
贴代码:
在一个长度为n的数组里的所有数字都在0到n-1的范围内。
数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。
请找出数组中任意一个重复的数字。
思路:
这个题目解法很多,这里给出一种解法,充分利用了题目的已知信息。
【每个数的范围是 0 - n-1 可能存在多个重复的数字】
贴代码:
bool duplicate(int numbers[], int length, int* duplication) { for(int i = 0; i < length; ++i) { int tmp = numbers[i] % length; numbers[tmp] += length; if(numbers[tmp] >= (2 * length)) { *duplication = numbers[tmp] % length; return true; } } return false; }
相关文章推荐
- 【C++】基础知识—对C语言的加强
- JNI调用C++类的方式
- leetcode 283 Move Zeroes C++
- C语言 九九乘法表
- 稀疏矩阵的C++实现
- private, public, protected 访问标号的访问范围之C++篇
- POJ 2828 Buy Tickets 题意&题解&代码(c++)
- c++学习笔记(专注细节,持续更新)
- Protocol Buffer技术详解(C++实例)
- 不用加减乘除做加法(C++)
- 初学链表的一些总结
- 自学c语言的第一天(算是吧)
- 【C语言提高18】【字符串模型】strstr_while/dowhile
- C语言基础知识1
- 流水灯,C语言版和汇编版
- C++中联合体(union)的使用
- 翻转单词顺序列(C++)
- 整数中X出现的次数(C++)
- 《C语言入门经典》Ivor Horton第十章练习题1
- 编译原理(九) LR(0)文法分析法(算法描述和C++代码实现)