【剑指offer】面试题03:数组中重复的数字(java)
在一個長度為 n 的數組 nums 里的所有數字都在 0~n-1 的范圍內。數組中某些數字是重復的,但不知道有幾個數字重復了,也不知道每個數字重復了幾次。請找出數組中任意一個重復的數字。
示例 1:
輸入:
[2, 3, 1, 0, 2, 5, 3]
輸出:2 或 3?
?
限制:
2 <= n <= 100000
代碼:
class?Solution?{
????public?int?findRepeatNumber(int[]?nums)?{
????????if(nums.length==0)
????????{
????????????return?0;
????????}
????????for(int?i=0;i<nums.length;)
????????{
????????????if(nums[i]!=i&&nums[nums[i]]!=nums[i])
????????????{
????????????????int?t?=?nums[nums[i]];
????????????????nums[nums[i]]?=?nums[i];
????????????????nums[i]?=?t;
????????????}
????????????else
????????????{
????????????????i++;
????????????}
????????}
????????for(int?i=0;i<nums.length;i++)
????????{
????????????if(nums[i]!=i)
????????????{
????????????????return?nums[i];
????????????}
????????}
????????return?0;
????}
}
總結
以上是生活随笔為你收集整理的【剑指offer】面试题03:数组中重复的数字(java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java打印三角形(双层for循环)
- 下一篇: Leetcode--102. 二叉树的层