劍指offer-AcWing 13. 找出陣列中重複的數字
阿新 • • 發佈:2022-04-18
https://www.acwing.com/problem/content/description/14/
給定一個長度為 n 的整數陣列 nums,陣列中所有的數字都在 0∼n−1 的範圍內。
陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。
請找出陣列中任意一個重複的數字。
注意:如果某些數字不在 0∼n−1 的範圍內,或陣列中不包含重複數字,則返回 -1;
資料範圍
0≤n≤1000
樣例
給定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。
返回 2 或 3。
點選檢視程式碼
class Solution { public: //前面有重複的不能返回nums[i],若後面有不符合要求的返回-1!!! // int duplicateInArray(vector<int>& nums) { if(nums.size() == 0) return -1; int st[1011]; memset(st,0,sizeof st); bool isok = true; int ans = -1; //如果所有數字都在0~n-1,不包含重複數字,也要返回-1 for(int i = 0; i < nums.size(); i++){ if(nums[i] < 0 || nums[i] > nums.size()-1){ isok = false; } if(st[nums[i]] != 0) ans = nums[i]; st[nums[i]] = 1; } if(isok && isok != -1) return ans; return -1; } };