剑指offer 查找数组中重复的数

题3、找出数组中重复的数字,例如,输出长度为7的数组{2,3,1,0,2,5,3},找出数组中重复的数字
解题思路:法一:先给数组进行排序,从排序好的数组中找到重复的数字,时间复杂度O(nlogn)
法二 :利用哈希表,如果哈希表里面 没有此数字,就把他加入哈希表,如果有,就找到了,提高了时间效率,时间复杂度是O(n),但他是以一个大小为O(n)的哈希表为代价的
法三:比较array[0] ?= 0,如果相等,继续扫描下一个数字,如果不相等,比较array[0] ?= array[array[0]] ,如果相等,则表明重复,如果不想等,则array[0]与array[array[0]]进行交换。总的时间复杂度是O(n).
4、为节省内存,c/c++把常量字符串放到一个单独的内存区域,当几个指针赋值给相同的常量字符串时,他们实际上会指向相同的内存地址
但是用常量内存初始化数组,情况就不同。

猜你喜欢

转载自blog.csdn.net/wjh814/article/details/80922807