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

2022-07-05 19:42:11 字數 1176 閱讀 2932

今天開始爭取每天更新至少一道《劍指offer》的題解

力扣-劍指 offer 03. 陣列中重複的數字

找出陣列中重複的數字。

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

示例 1:

輸入:[2, 3, 1, 0, 2, 5, 3]

輸出:2 或 3

限制:2 <= n <= 100000

難度為簡單。

一次遍歷,將掃瞄到數字做判斷,如果可以在map中查到,就新增進去,否則返回這個數字,因為這個數字已經在map裡存在了,屬於重複數字。

//go

func findrepeatnumber(nums int) int else

}return -1

}

leetcode-cn執行:

執行用時:

56 ms, 在所有 go 提交中擊敗了8.84%的使用者

記憶體消耗:8.9 mb, 在所有 go 提交中擊敗了39.48%的使用者

牛客網執行:

超過100.00%用go提交的**

占用記憶體:832kb

超過100.00%用go提交的**

遍歷陣列並通過交換操作,使元素的 索引 與 值 一一對應(即 nums[i] = inums[i]=i )。因而,就能通過索引對映對應的值,起到與字典等價的作用。可以看這個題解

//go

func findrepeatnumber(nums int) int

if nums[nums[i]] == nums[i]

tmp := nums[i]

nums[i] = nums[tmp]

nums[tmp] = tmp

}return -1

}

leetcode-cn執行:

執行用時:

40 ms, 在所有 go 提交中擊敗了86.59%的使用者

記憶體消耗:8.7 mb, 在所有 go 提交中擊敗了89.50%的使用者

劍指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 首...