Skip to content

Latest commit

 

History

History
49 lines (41 loc) · 1.17 KB

1481.Least_Number_of_Unique_Integers_after_K_Removals.md

File metadata and controls

49 lines (41 loc) · 1.17 KB

這題蠻多種解法的,這邊我用兩個 HashMap 來解,一個用來計算數字出現的次數,另一個用來計算出現次數的數字。

  • 先用第一個 HashMap 計算數字出現的次數
  • 再用第二個 HashMap 來計算出現次數的數字
  • 最用用 K 來移除數字,如果移除的數字次數大於等於 K 就移除,否則就停止開始計算結果
func findLeastNumOfUniqueInts(arr []int, k int) int {
	number, counter := make(map[int]int), make(map[int][]int)
	for _, v := range arr {
		number[v]++
	}

	var max_count int
	for k, v := range number {
		counter[v] = append(counter[v], k)
		max_count = intMax(max_count, v)
	}

	var result int
	for i := 1; i <= max_count; i++ {
		for k > 0 && len(counter[i]) > 0 {
			if k-i >= 0 {
				counter[i] = counter[i][1:]
				k -= i
			} else {
				k = 0
				break
			}
		}

		if k == 0 {
			result += len(counter[i])
		}
	}

	return result
}

func intMax(a, b int) int {
	if a > b {
		return a
	}
	return b
}