leetcodeA題之判斷重複資料,兩次,多次

2021-10-05 14:26:45 字數 2183 閱讀 6212

本題源自leetcode  442

給定乙個整數陣列 a,其中1 ≤ a[i] ≤ n (n為陣列長度), 其中有些元素出現兩次而其他元素出現一次。

找到所有出現兩次的元素。

你可以不用到任何額外空間並在o(n)時間複雜度內解決這個問題嗎?

示例:

輸入:

[4,3,2,7,8,2,3,1]

輸出:[2,3]

第一種,遍歷整個陣列,將陣列中的i插入i-1的位置,然後遍歷陣列,如果nums[i]!=i+1也就是nums[i]本身,輸出

時間複雜度o(2n)~o(n)

var findduplicates = function(nums)  else 

}//let nums = [4,3,2,7,8,2,3,3,1]

//[4,3,2,-7,8,2,3,3,1]

//[4,3,2,-7,8,2,3,3,1]

//[4,3,-2,-7,8,2,3,3,1]

//[4,-3,-2,-7,8,2,3,3,1] nums[7-1]

//[4,-3,-2,-7,8,2,3,-3,1]

//[4,-3,-2,-7,8,2,3,-3,-1] i=4 nums[8-1]

//[4,-3,-2,-7,8,2,3,-3,-1] i=5 nums[2-1] nums[1] = -3 res[2]

//[4,-3,-2,-7,8,2,3,-3,-1] i=6 nums[3-1] nums[2] = -2 res[2,3]

//[4,-3,-2,-7,8,2,3,-3,-1] i=7 nums[3-1] nums[2] = -2 res[2,3,3]

//[4,-3,-2,-7,8,2,3,-3,-1] i=8 nums[1-1] nums[0] = 4 res[2,3,3]

以上方案都是針對,資料最多隻出現兩次,若出現三次,返回的結果就會重複。

面試題03. 陣列中重複的數字

找出陣列中重複的數字。

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

示例 1:

輸入:

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

輸出:2 或 3

限制:2 <= n <= 100000

鴿巢原理/抽屜原理

你有11個蘋果,需要放進10個抽屜,勢必會有乙個抽屜出現乙個以上的蘋果。

還是將i放進i的角標的空間裡

var findrepeatnumber = function(nums) else

} }return -1;

};//let arr = [0, 1, 2, 3, 4, 11, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];

// [0, 1, 2, 3, 4, 11, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] i = 0,1,2,3,4

// [0, 1, 2, 3, 4, 11, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] i = 5 nums[5] = 11 nums[11]===nums[5] return nums[11]

let arr = [0, 1, 2, 3, 4, 11, 6, 7, 8, 9, 10, 12, 11, 13, 14, 15];

// [0, 1, 2, 3, 4, 11, 6, 7, 8, 9, 10, 12, 11, 13, 14, 15] i = 0,1,2,3,4

// [0, 1, 2, 3, 4, 11, 6, 7, 8, 9, 10, 12, 11, 13, 14, 15] i = 5 nums[5] = 11 nums[11]!==nums[5] 交換

// [0, 1, 2, 3, 4, 12, 6, 7, 8, 9, 10, 11, 11, 13, 14, 15] i = 6 nums[6]=6,7,8,9,10,11

// [0, 1, 2, 3, 4, 12, 6, 7, 8, 9, 10, 11, 11, 13, 14, 15] i = 12 nums[12] = 11 nums[11] === nums[12] return nus[11]

原地重複值判斷

題目 請設計乙個高效演算法,判斷陣列中是否有重複值。必須保證額外空間複雜度為o 1 給定乙個int陣列a及它的大小n,請返回它是否有重複值。思路 先將陣列原地排序,然後檢視是否有相鄰元素值相同。那麼能夠實現原地排序且時間複雜度小的是 非遞迴的堆排序。時間複雜度o nlogn 空間複雜度o 1 pub...

python 判斷列表重複

一 判斷單個列表中的元素是否存在重複 使用set方法去重後,和原list進行對比,如果相等,那麼說明原列表無重複,如果存在重複,說明列表存在重複 1 defis repect all l 2 repeatlist 3 setlist set l 4 flag true 5if len l len s...

LeetCode刷題之392 判斷子串行

我不知道將去向何方,但我已在路上!十六進製制中所有字母 a f 都必須是小寫。十六進製制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元 0 來表示 對於其他情況,十六進製制字串中的第乙個字元將不會是0字元。給定的數確保在32位有符號整數範圍內。不能使用任何由庫提供的將數字直接轉換或格...