首页 > 代码库 > 51 数组中重复的数字
51 数组中重复的数字
哈希
时间On 空间On
bool duplicate(int numbers[], int length, int* duplication) { unordered_map<int, int> count; for (int i = 0; i < length; i++) count[numbers[i]]++; unordered_map<int, int>::iterator ite = count.begin(); while (ite != count.end()) { if (ite->second != 1) { *duplication = ite->first; return true; } ite++; } return false;}
方法二
时间On空间O1
bool duplicate(int numbers[], int length, int* duplication){ if (numbers == NULL || length <= 0) retrun false; for (int i = 0; i < length; i++) //根据题意检查数字合法性 { if (numbers[i] < 0 || numbers[i] > length - 1) return false; } for (int i = 0; i < length; i++) { while (numbers[i] != i) { if (numbers[i] == numbers[numbers[i]]) //找到重复数字 { *duplication = numbers[i]; return true; } swap(numbers[i], numbers[numbers[i]]); //放到该放的位置 } } return false;}
51 数组中重复的数字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。