首页 > 其他分享 >大厂面试高频题目

大厂面试高频题目

时间:2024-06-01 19:10:27浏览次数:15  
标签:nums int res 面试 num dict 大厂 key 高频

动态规划

数组

347. 前 K 个高频元素

给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。

思考

  1. 哈希+内置排序
class Solution:
    def topKFrequent(self, nums: List[int], k: int) -> List[int]:
        num_dict = defaultdict(int)
        for c in nums:
            num_dict[c]+=1
        index_dict = defaultdict(list)
        for key in num_dict:
            index_dict[num_dict[key]].append(key)
        keys = list(index_dict.keys())
        keys.sort(reverse=True)
        cnt = 0
        res = []
        for key in keys:
            res+=index_dict[key]
            cnt=len(res)
            if cnt == k:
                break
        return res
class Solution:
    def topKFrequent(self, nums: List[int], k: int) -> List[int]:
        num_dict = defaultdict(int)
        for c in nums:
            num_dict[c]+=1
        kvlist = [] 
        for num,freq in num_dict.items():
            kvlist.append((freq,num))
        kvlist.sort(key=lambda x:x[0],reverse=True)    
        res = []
        for item in kvlist[:k]:
            res.append(item[1])
        return res
  1. 哈希+最小堆
import heapq
class Solution:
    def topKFrequent(self, nums: List[int], k: int) -> List[int]:
        num_dict = defaultdict(int)
        for c in nums:
            num_dict[c]+=1
        pri_que = [] #小顶堆
        for num,freq in num_dict.items():
            heapq.heappush(pri_que,(freq,num))
            if len(pri_que)>k:
                heapq.heappop(pri_que) 
        res = []
        print(pri_que)
        for item in pri_que:
            res.append(item[1])
        return res

标签:nums,int,res,面试,num,dict,大厂,key,高频
From: https://www.cnblogs.com/forrestr/p/18226271

相关文章

  • 大三学生第一次Java面试记录
    前言分享一下第一次面试的经历吧,希望对焦虑害怕的大学生有帮助吧,其实我也很慌~~一、2024年5月8号这天我在牛客app上找的校招网申,然后看着跟开发有关的公司就都投了,主打一个广撒网,因为我觉得在校大学生也没有实习经验,学校也不是双一流知名学校,校招的企业应该要求会宽容一点......
  • 深入解析力扣170题:两数之和 III - 数据结构设计(哈希表与双指针法详解及模拟面试问答)
    在本篇文章中,我们将详细解读力扣第170题“两数之和III-数据结构设计”。通过学习本篇文章,读者将掌握如何设计一个数据结构来支持两种操作,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释和ASCII图解,以便于理解。问题描述力扣第170题“两数之和III......
  • 一文了解JVM面试篇(上)
    Java内存区域1、如何解释Java堆空间及GC?当通过Java命令启动Java进程的时候,会为它分配内存。内存的一部分用于创建堆空间,当程序中创建对象的时候,就从对空间中分配内存。GC是JVM内部的一个进程,回收无效对象的内存用于将来的分配。2、JVM的主要组成部分及其作用?组......
  • 【面试宝典】30道C++ 基础高频题库整理(附答案背诵版)
    1.C和C++有什么区别?C++是C语言的超集(我看网上很多文章说这是不对的),这意味着几乎所有的C程序都可以在C++编译器中编译和运行。然而,C++引入了许多新的概念和特性,使得两种语言在一些关键点上有显著的区别。以下是C和C++的一些主要区别:面向对象编程:C++支持面向对象编程(OOP),包......
  • 程序分享--大厂常见算法/编程面试题:O(1) 时间插入、删除和获取随机元素
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。或关注博主免费专栏【程序......
  • 单片机软件开发工程师(笔试+面试)
    笔试部分:1、strcpy和mencpy的作用与区别strcpy和mencpy都是C标准库函数,他们有以下特点:①复制内容不同:strcpy只能复制字符串,而mencpy可以复制任意内容、如字符数组、整型、结构体等。②复制方法不同:strcpy不需要指定长度、它遇到被复制的字符串的结束符’\0‘才结束,所以容易......
  • 前端面试题日常练-day43 【面试题】
    题目希望这些选择题能够帮助您进行前端面试的准备,答案在文末1.在Bootstrap中,以下哪个类用于创建一个具有响应式的栅格系统?a).rowb).grid-systemc).containerd).responsive-grid2.哪个Bootstrap类用于创建一个具有圆角边框的容器?a).container-roundedb).rou......
  • 云计算面试题
    5.20日java的集合体系结构它提供了一组接口、类和算法,用于存储和管理对象集合。Java的集合框架包括多个基本接口,如Collection、List、Set、Map等。Collection是集合层次结构的根接口,代表一组对象;List是有序集合,可以包含重复元素;Set是不包含重复元素的集合;Map是键值对的集......
  • 滴滴面试:谈谈你对Netty线程模型的理解?
    Netty线程模型是指Netty框架为了提供高性能、高并发的网络通信,而设计的管理和利用线程的策略和机制。Netty线程模型被称为Reactor(响应式)模型/模式,它是基于NIO多路复用模型的一种升级,它的核心思想是将IO事件和业务处理进行分离,使用一个或多个线程来执行任务的一种机制。......
  • 途虎养车测试一面二面HR面面试经历
    一面35分钟1、手写代码题2、自我介绍3、UI自动化平台是什么4、怎么定位元素的5、怎么解决元素定位不到的问题?元素无法定位有什么原因?6、游戏测试过程中,有没有印象深刻的缺陷7、功能测试流程8、点击搜索按钮没有反应,可能有哪些原因9、接口之间调用咋做的10、SQL题反......