NC283. 数组中重复的数字
描述
示例1
输入:
[2,3,1,0,2,5,3]
输出:
2
说明:
2或3都是对的C++ 解法, 执行用时: 3ms, 内存消耗: 640KB, 提交时间: 2021-10-30
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型vector * @return int整型 */ int duplicate(vector<int>& numbers) { // write code here int len = numbers.size(); for(int i = 0 ; i < len ;++i) { while( numbers[i] != i ) { int t = numbers[i]; if( numbers[t] != t ) { numbers[i] = numbers[t]; numbers[t] = t; } else return t; } swap(numbers[i],numbers[numbers[i]]); } return -1; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 644KB, 提交时间: 2021-09-07
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型vector * @return int整型 */ int duplicate(vector<int>& numbers) { // write code here int i = 0; while(i < numbers.size()) { if(numbers[i] == i) { i++; continue; } if(numbers[numbers[i]] == numbers[i]) return numbers[i]; swap(numbers[i],numbers[numbers[i]]); } return -1; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 648KB, 提交时间: 2021-11-01
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型vector * @return int整型 */ int duplicate(vector<int>& numbers) { if(numbers.size() <= 1) return -1; vector <int> v(numbers.size(),0); for(int i = 0; i < numbers.size(); i++){ if(v[numbers[i]] != 0) return numbers[i]; v[numbers[i]] = -1; } return -1; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 648KB, 提交时间: 2021-09-04
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型vector * @return int整型 */ int duplicate(vector<int>& numbers) { // write code here sort(numbers.begin(),numbers.end()); int n = numbers.size(); int ans; if(n<=0) return -1; for(int i=0;i<n;i++) { if(numbers[i]==numbers[i+1]) ans = numbers[i]; } return ans; } };
Rust 解法, 执行用时: 3ms, 内存消耗: 652KB, 提交时间: 2021-11-29
struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型一维数组 * @return int整型 */ pub fn duplicate(&self, numbers: Vec<i32>) -> i32 { // write code here if numbers.len() == 0 { return -1; } let mut nums:Vec<i32> = numbers; for i in 0..nums.len() { while nums[i] != i as i32 { if nums[i] == nums[nums[i] as usize] { return nums[i]; } let tmp = nums[i]; nums[i] = nums[nums[i] as usize]; nums[tmp as usize] = tmp; } } return -1; } }