当前位置:网站首页>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)
}
}
边栏推荐
- 1.14 - 流水线
- CPU内核和逻辑处理器的区别
- LeetCode 1200. Minimum absolute difference
- Daily question 2006 Number of pairs whose absolute value of difference is k
- [rust notes] 16 input and output (Part 2)
- leetcode-6111:螺旋矩阵 IV
- LeetCode 0108. Convert an ordered array into a binary search tree - the median of the array is the root, and the left and right of the median are the left and right subtrees respectively
- Daily question 2013 Detect square
- leetcode-6110:网格图中递增路径的数目
- 1996. number of weak characters in the game
猜你喜欢
wordpress切换页面,域名变回了IP地址
Spark中groupByKey() 和 reduceByKey() 和combineByKey()
LeetCode 0108.将有序数组转换为二叉搜索树 - 数组中值为根,中值左右分别为左右子树
MatrixDB v4.5.0 重磅发布,全新推出 MARS2 存储引擎!
Implement an iterative stack
Quickly use Amazon memorydb and build your own redis memory database
MIT-6874-Deep Learning in the Life Sciences Week 7
Some common problems in the assessment of network engineers: WLAN, BGP, switch
Liunx starts redis
Dynamic planning solution ideas and summary (30000 words)
随机推荐
One question per day 1765 The highest point in the map
Navicat连接Oracle数据库报错ORA-28547或ORA-03135
[rust notes] 16 input and output (Part 1)
“磐云杯”中职网络安全技能大赛A模块新题
LeetCode 1200.最小绝对差
实时时钟 (RTC)
Sqlmap tutorial (1)
Introduction to convolutional neural network
MIT-6874-Deep Learning in the Life Sciences Week 7
数据可视化图表总结(一)
【Rust 笔记】16-输入与输出(下)
leetcode-6111:螺旋矩阵 IV
Data visualization chart summary (I)
Binary search template
Daily question 2006 Number of pairs whose absolute value of difference is k
leetcode-1200:最小绝对差
【云原生】微服务之Feign自定义配置的记录
1996. number of weak characters in the game
[cloud native] record of feign custom configuration of microservices
1040 Longest Symmetric String