劍指OFFER03 陣列中重複的數字

2022-07-05 09:42:08 字數 995 閱讀 5714

找出陣列中重複的數字。

在乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。

示例 1:

輸入:

[2, 3, 1, 0, 2, 5, 3]

輸出:2 或 3

限制:

2 <= n <= 100000

使用set,遍歷陣列,如果set中存在該元素就返回,否則新增到set中

public int findrepeatnumber(int nums) 

}return -1;

}

對陣列排序,相同的元素在相鄰位置,如果有則返回

public int findrepeatnumber(int nums) 

}return -1;

}

利用所有數字都在 0~n-1 的範圍內的條件,用乙個額外的陣列,對每個值就在對應位置+1,當》1的時候返回

public int findrepeatnumber(int nums) 

}return -1;

}

將對應的數值放入陣列中的對應位置,如果有重複的返回

public int findrepeatnumber(int nums) 

//如果重複,返回

if (nums[i]==nums[nums[i]])

//交換

int temp = nums[nums[i]];

nums[nums[i]] = nums[i];

nums[i] = temp;

//交換之後需要原地比較一次

i--;

}return -1;

}

劍指offer03 陣列中重複的數字

在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 1 輸入 2,3,1,0,2,5,3 輸出 2 或 3限制 2 n 100000 首先拿到這道題最先想到的是...

劍指Offer03 陣列中重複的數字

劍指offer典型題整理 爭取做最好的題解 題目描述 在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 輸入 2,3,1,0,2,5,3 輸出 2 或 3 限...

劍指offer 03陣列中重複的數字

找出陣列中重複的數字。在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 1 輸入 2,3,1,0,2,5,3 輸出 2 或 3 限制 2 n 100000 首...