当前位置:网站首页>Leetcode heap correlation
Leetcode heap correlation
2022-07-05 06:13:00 【Dawnlighttt】
List of articles
q215 The... In the array k The biggest element
Answer key
Although the title requires that the number in the array be returned k The biggest element , But what I build is a small root pile , Because when building a small root heap , Assigning values to the result array starts from large to small , That is, assign values from the end of the array . So when the last sorting operation is traversed , When len(nums) - i == k when , Go straight back to nums[i] that will do .
func findKthLargest(nums []int, k int) int {
// Building the heap
for i := len(nums) / 2 - 1; i >= 0; i-- {
heapify(nums, len(nums), i)
}
for i := len(nums) - 1; i > 0; i-- {
nums[i], nums[0] = nums[0], nums[i]
heapify(nums, i, 0)
if len(nums) - i == k {
return nums[i]
}
}
return nums[0]
}
func heapify(arr []int, n int, i int) {
// Heap maintenance
largest := i //i Is the subscript of the current parent node
lson := i * 2 + 1 // Left the child
rson := i * 2 + 2 // The right child
// Save the subscript of the maximum value
if lson < n && arr[largest] < arr[lson] {
largest = lson
}
if rson < n && arr[largest] < arr[rson] {
largest = rson
}
if largest != i {
arr[largest], arr[i] = arr[i], arr[largest]
// Recursively maintain the heap to the child node
heapify(arr, n, largest)
}
}
q347 front k High frequency elements
Answer key
First, use one hash Table to record the number of times each number appears , Then open a two-dimensional array ,count[i][0] Used to store the elements of a given array ,count[i][1] Used to store the number of occurrences of a given array element . Then use heap sorting , Sort the elements according to the number of occurrences , According to count[i][1] To build a small root pile , In order to count Array to sort . And then count[i][0] Deposit in res in , Finally, when len(nums) - i == k when , return res that will do . The practice is similar to the previous question .
func topKFrequent(nums []int, k int) []int {
hashTable := make(map[int]int)
for _, v := range nums {
hashTable[v]++
}
var count [][]int
for k, v := range hashTable {
count = append(count, []int{
k, v})
}
res := make([]int, 0)
// Building the heap
for i := len(count) / 2 - 1; i >= 0; i-- {
heapify(count, len(count), i)
}
for i := len(count) - 1; i >= 0; i-- {
count[i], count[0] = count[0], count[i]
heapify(count, i, 0)
res = append(res, count[i][0])
if len(count) - i == k {
break
}
}
return res
}
func heapify(arr [][]int, n int, i int) {
// Heap maintenance
largest := i //i Is the subscript of the current parent node
lson := i * 2 + 1 // Left the child
rson := i * 2 + 2 // The right child
// Save the subscript of the maximum value
if lson < n && arr[largest][1] < arr[lson][1] {
largest = lson
}
if rson < n && arr[largest][1] < arr[rson][1] {
largest = rson
}
if largest != i {
arr[largest], arr[i] = arr[i], arr[largest]
// Recursively maintain the heap to the child node
heapify(arr, n, largest)
}
}
边栏推荐
- Daily question 1342 Number of operations to change the number to 0
- Collection: programming related websites and books
- 1039 Course List for Student
- 做 SQL 性能优化真是让人干瞪眼
- Quickly use Amazon memorydb and build your own redis memory database
- [rust notes] 13 iterator (Part 2)
- [rust notes] 14 set (Part 2)
- Control unit
- leetcode-31:下一个排列
- LVS简介【暂未完成(半成品)】
猜你喜欢
随机推荐
Simply sort out the types of sockets
开源存储这么香,为何我们还要坚持自研?
Leetcode-6111: spiral matrix IV
[rust notes] 14 set (Part 1)
Daily question 2013 Detect square
Erreur de connexion Navicat à la base de données Oracle Ora - 28547 ou Ora - 03135
Is it impossible for lamda to wake up?
Leetcode-6109: number of people who know secrets
Wazuh开源主机安全解决方案的简介与使用体验
Introduction and experience of wazuh open source host security solution
MIT-6874-Deep Learning in the Life Sciences Week 7
Appium automation test foundation - Summary of appium test environment construction
Wazuh開源主機安全解决方案的簡介與使用體驗
Flutter Web 硬件键盘监听
Appium基础 — 使用Appium的第一个Demo
[rust notes] 16 input and output (Part 2)
Daily question 1342 Number of operations to change the number to 0
TypeScript 基础讲解
【Rust 笔记】13-迭代器(下)
QQ computer version cancels escape character input expression