当前位置:网站首页>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)
}
}
边栏推荐
- Simple knapsack, queue and stack with deque
- shared_ Repeated release heap object of PTR hidden danger
- Smart construction site "hydropower energy consumption online monitoring system"
- Leetcode-9: palindromes
- 【云原生】微服务之Feign自定义配置的记录
- How to adjust bugs in general projects ----- take you through the whole process by hand
- Typical use cases for knapsacks, queues, and stacks
- MIT-6874-Deep Learning in the Life Sciences Week 7
- 一些工具的记录2022
- The difference between CPU core and logical processor
猜你喜欢
Appium基础 — 使用Appium的第一个Demo
Brief introduction to tcp/ip protocol stack
Leetcode-6111: spiral matrix IV
redis发布订阅命令行实现
开源存储这么香,为何我们还要坚持自研?
[cloud native] record of feign custom configuration of microservices
Quickly use Amazon memorydb and build your own redis memory database
Sqlmap tutorial (1)
SQLMAP使用教程(二)实战技巧一
Groupbykey() and reducebykey() and combinebykey() in spark
随机推荐
Appium基础 — 使用Appium的第一个Demo
Leetcode-6108: decrypt messages
Matrixdb V4.5.0 was launched with a new mars2 storage engine!
shared_ Repeated release heap object of PTR hidden danger
RGB LED infinite mirror controlled by Arduino
多屏电脑截屏会把多屏连着截下来,而不是只截当前屏
A reason that is easy to be ignored when the printer is offline
[rust notes] 15 string and text (Part 1)
Overview of variable resistors - structure, operation and different applications
【Rust 笔记】15-字符串与文本(上)
Quickly use Amazon memorydb and build your own redis memory database
Groupbykey() and reducebykey() and combinebykey() in spark
1040 Longest Symmetric String
【Rust 笔记】13-迭代器(下)
R language [import and export of dataset]
Sqlmap tutorial (1)
[jailhouse article] look mum, no VM exits
Sword finger offer II 058: schedule
Is it impossible for lamda to wake up?
Liunx starts redis