当前位置:网站首页>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)
}
}
边栏推荐
猜你喜欢
Introduction to LVS [unfinished (semi-finished products)]
Dichotomy, discretization, etc
Implement a fixed capacity stack
[jailhouse article] look mum, no VM exits
Scope of inline symbol
Analysis of backdoor vulnerability in remote code execution penetration test / / phpstudy of national game title of national secondary vocational network security B module
SPI details
QQ电脑版取消转义符输入表情
LeetCode 0108.将有序数组转换为二叉搜索树 - 数组中值为根,中值左右分别为左右子树
wordpress切换页面,域名变回了IP地址
随机推荐
数据可视化图表总结(一)
Wazuh开源主机安全解决方案的简介与使用体验
[practical skills] how to do a good job in technical training?
Daily question 2013 Detect square
[rust notes] 13 iterator (Part 2)
MIT-6874-Deep Learning in the Life Sciences Week 7
Leetcode-556: the next larger element III
redis发布订阅命令行实现
Solution to game 10 of the personal field
884. Uncommon words in two sentences
Data visualization chart summary (I)
【Rust 笔记】16-输入与输出(上)
Analysis of backdoor vulnerability in remote code execution penetration test / / phpstudy of national game title of national secondary vocational network security B module
[rust notes] 16 input and output (Part 1)
Full Permutation Code (recursive writing)
2022 pole technology communication arm virtual hardware accelerates the development of Internet of things software
JS quickly converts JSON data into URL parameters
R language [import and export of dataset]
【Rust 笔记】13-迭代器(中)
MIT-6874-Deep Learning in the Life Sciences Week 7