在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。
從頭到尾依次遍歷陣列,比較下標為i的數字(用m表示)是否等於i。如果相等則遍歷下乙個數字,否則比較m和下標為m的數字是否相等,相等則找到了乙個重複數字,返回true,否則交換m和下標為m的數字,把m放到下標為m的位置。重複這個過程,直到找到重複的數字
class
solution
for(
int i =
0;i < length;
++i)
else}}
return
false;}
};
時間複雜度:有乙個兩重迴圈,但每個數字最多交換兩次就能找到屬於它自己的位置,因此總的時間複雜度是o(n)
空間複雜度:o(1)
陣列中重複的數字(1)
題目 找出陣列中的重複數字 在乙個長度為n的陣列裡的所有數字都在0 n 1的範圍內。陣列中某些數字是重複的,但不知道有哪幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者是3。第一種方法 暴力解決 對於每乙個數字...
1 陣列中重複的數字
在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中第乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。返回描述 如果陣列中有重複的數字,函式返回true,否則返回false...
1 找出陣列中重複的數字
方法1 通過構建hashmap,記錄每個值的重複情況。複雜度 o n o 1 class solution mapmap new hashmap for int i 0 i nums.length i else return 1 方法2 由於題目特徵,構建1 n 1的桶 將每個數字放到對應下標的正確...