博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Leetcode刷题篇】前K个高频元素
阅读量:1886 次
发布时间:2019-04-26

本文共 1031 字,大约阅读时间需要 3 分钟。

题目:给定一个非空的整数数组,返回其中出现频率前 k 高的元素。

示例 1:

输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]

示例 2:

输入: nums = [1], k = 1
输出: [1]

题解:用一个优先级队列来进行,hashmap存储key和value,根据value的值来比较

package com.lcz.leetcode;/** * 前K个高频元素 * @author LvChaoZhang * */import java.util.*;public class Leetcode347 {
public int[] topKFrequent(int[] nums,int k) {
HashMap
hashMap= new HashMap<>(); for (int i = 0; i < nums.length; i++) {
if(hashMap.containsKey(nums[i])) {
hashMap.put(nums[i], hashMap.get(nums[i])+1); }else {
hashMap.put(nums[i],1); } } // 优先级队列 小顶堆 PriorityQueue
queue = new PriorityQueue
(k,(a,b)->Integer.compare(hashMap.get(a), hashMap.get(b))); // 对HashMap的key进行遍历 for(int key:hashMap.keySet()) {
if(k>queue.size()) {
queue.offer(key); }else if(hashMap.get(key)>hashMap.get(queue.peek())) {
queue.poll(); queue.offer(key); } } int[] res = new int[k]; int index = 0; while(!queue.isEmpty()) {
res[index++] = queue.poll(); } return res; }}

转载地址:http://wzwdf.baihongyu.com/

你可能感兴趣的文章
Spring中事务内部调用引发的惨案
查看>>
Spring事务处理时自我调用的解决方案及一些实现方式的风险
查看>>
Vue.js 组件注册
查看>>
Vue.js Prop
查看>>
Vue.js 自定义事件
查看>>
Vue.js 插槽
查看>>
Vue.js 动态组件 & 异步组件
查看>>
Vue.js 组件 处理边界情况
查看>>
Vue.js 进入/离开 & 列表过渡
查看>>
Vue.js 状态过渡
查看>>
Vue.js 混入
查看>>
Vue.js 自定义指令
查看>>
Vue.js 渲染函数 & JSX
查看>>
Vue + webpack 项目实践
查看>>
从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理
查看>>
Vue.js新手入门指南
查看>>
当你「ping 一下」的时候,你知道它背后的逻辑吗?
查看>>
2017 Vue.js 2快速入门指南
查看>>
Android开发入门经典实例
查看>>
Android 学习之路
查看>>