一. 題目
問題給你乙個整數陣列 nums 。
如果一組數字 (i,j) 滿足 nums[i] == nums[j] 且 i < j ,就可以認為這是一組 好數對 。
返回好數對的數目。
示例
二. 方法一
解題思路
解題**
def
numidenticalpairs
(self, nums: list[
int])-
>
int:
count =
0for i in
range(0
,len
(nums)):
for j in
range
(i +1,
len(nums)):
if nums[i]
== nums[j]
: count +=
1return count
分析
時間複雜度: o(n^2)
空間複雜度: o(1)
三. 方法二: 高斯求和
解題思路
先對列表進行排序
再計算出每組數字的個數
高斯求和
解題**
def
numidenticalpairs
(self, nums: list[
int])-
>
int:
nums.sort(
) count =
0 num =
1for i in
range(0
,len
(nums)-1
):if nums[i]
== nums[i +1]
: num +=
1else
:if num !=1:
count += num *
(num -1)
/2num =
1if num !=1:
count += num *
(num -1)
/2return
int(count)
分析
時間複雜度: o(nlogn)
空間複雜度: o(1)
四. 方法三:(方法二的優化, 用map儲存)
解題思路
用map儲存相同元素的數量(key為元素, value為數量)
再使用高斯求和計算最終的結果
解題**
def
numidenticalpairs
(self, nums: list[
int])-
>
int:
map=
count =
0for ele in nums:
if ele not
inmap
.keys():
map[ele]=1
else
:map
[ele]+=1
for key in
map.keys():
ifmap
[key]
>=2:
count +=
map[key]*(
map[key]-1
)//2return count
雜湊錶類題 Leetcode1512 好數對的題目
給你乙個整數陣列 nums 如果一組數字 i,j 滿足 nums i nums j 且 i j 就可以認為這是一組 好數對 返回好數對的數目。示例 1 輸入 nums 1,2,3,1,1,3 輸出 4 解釋 有 4 組好數對,分別是 0,3 0,4 3,4 2,5 下標從 0 開始 示例 2 輸入 ...
1512 好數對的數目
給你乙個整數陣列 nums 如果一組數字 i,j 滿足 nums i nums j 且 i j 就可以認為這是一組 好數對 返回好數對的數目。示例 1 輸入 nums 1,2,3,1,1,3 輸出 4 解釋 有 4 組好數對,分別是 0,3 0,4 3,4 2,5 下標從 0 開始 示例 2 輸入 ...
leetCode刷題《1512 好數對的數目》
給你乙個陣列 candies 和乙個整數 extracandies 其中 candies i 代表第 i 個孩子擁有的糖果數目。對每乙個孩子,檢查是否存在一種方案,將額外的 extracandies 個糖果分配給孩子們之後,此孩子有 最多 的糖果。注意,允許有多個孩子同時擁有 最多 的糖果數目。示例...