今天開始爭取每天更新至少一道《劍指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 首...