快速找出重复的数
2016-10-29 22:21
113 查看
某式面试官问了一道这样的题,1到N(N为正整数)共N个正整数,其中有一个数重复一次覆盖了另外一个数,比如:9,3,7,5,1,8,2,4,5,那么其中5重复一次,相当于覆盖了6,那么,请找出这个重复的数。
当时提供了HASH法,但人家不满意,直接pass了。
如果能想到循环链表式的数据结构,那么就很容易有思路了。
当时提供了HASH法,但人家不满意,直接pass了。
如果能想到循环链表式的数据结构,那么就很容易有思路了。
1 #include <iostream> 2 #include <stdlib.h> 3 #include <stdio.h> 4 #include <string> 5 #include <string.h> 6 #include <algorithm>//reverse 7 #include <vector> 8 using namespace std; 9 #define debug(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl 10 11 void f(int *s,int n){ 12 int w = 0, f=0; 13 do{ 14 w = s[w]-1; 15 f = s[s[f]-1]-1; 16 }while(w != f); 17 printf("%d\n", w+1); 18 } 19 20 int main() { 21 int N = 7; 22 int arr[]={2,5,3,4,6,7,3}; 23 f(arr, N); 24 }
相关文章推荐
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 快速找出DataTable中的重复行
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 1-10000这10000个数乱序的写出来,但是其中有个数字写错了(可能重复,或者不是1-10000中的数字),如何快速找出?
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 只遍历一遍 找出两个重复的数(将数组中各元素作为新数组的下标)
- C# 程序找出文件重复的行,计算函数执行的时间
- C#快速找出磁盘内的所有文件
- 快速找出Linux下的大文件
- 利用基于rowid的快速删除重复行的例子
- 找出数组的重复元素
- MFC重复行删除工具(C/C++) 文本文件 结合BeyonCompare 找出不同的
- 找出一个字符串中重复最多的字符以及出现的次数
- 阿里面试算法题-1-100随机替换两个为零,如何快速找出
- 看了这个教程,学会快速找出三等分点
- 快速删除重复记录(Oracle&SqlServer)
- Excel 中如何找出两列数据中不重复的记录