LeetCode1512 好數對的數目

2021-10-08 18:30:34 字數 1810 閱讀 5121

一. 題目

問題給你乙個整數陣列 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 個糖果分配給孩子們之後,此孩子有 最多 的糖果。注意,允許有多個孩子同時擁有 最多 的糖果數目。示例...