题解 | #字符串出现次数的TopK问题#

字符串出现次数的TopK问题

https://www.nowcoder.com/practice/fd711bdfa0e840b381d7e1b82183b3ee

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# return topK string
# @param strings string字符串一维数组 strings
# @param k int整型 the k
# @return string字符串二维数组
#
import heapq

# 需要自定义类,重写__lt__方法,不管是排序还是入堆,都只使用<进行比较
class MyDict:
    def __init__(self, item):
        self.item = list(item)

    def __lt__(self, other):
        if self.item[1] != other.item[1]:
            return self.item[1] < other.item[1]
		# 注意是按照字典序从小到大排序的 
        return self.item[0] > other.item[0]

class Solution:
    def topKstrings(self , strings: List[str], k: int) -> List[List[str]]:
        # write code here
        my_map = {}
        for i in strings:
            if my_map.get(i) is None:
                my_map[i] = 1
            else:
                my_map[i] += 1

        # 把字典转换成列表,并维护一个大小为K的堆
        res = []
        for item in my_map.items():
            if len(res) == k:
                heapq.heappushpop(res, MyDict(item))
            else:
                heapq.heappush(res, MyDict(item))
        temp = [heapq.heappop(res).item for _ in range(len(res))]
		# 因为是小顶堆需要反转一下
        temp.reverse()
        
        
        return temp

python3,采用堆排序的思路,使用heapq实现,时间复杂度O(nlogk)

2023.12.19 字节国际化电商测开社招一面算法题,当时用暴力破解写出来了,想到了堆排序的思路但是写不出来,寄

全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
3876次浏览 45人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
16907次浏览 137人参与
# 巨人网络春招 #
11527次浏览 224人参与
# 春招至今,你的战绩如何? #
15716次浏览 144人参与
# 你的实习产出是真实的还是包装的? #
3051次浏览 53人参与
# 沪漂/北漂你觉得哪个更苦? #
1553次浏览 41人参与
# 米连集团26产品管培生项目 #
7293次浏览 226人参与
# HR最不可信的一句话是__ #
1091次浏览 32人参与
# AI面会问哪些问题? #
946次浏览 23人参与
# 你做过最难的笔试是哪家公司 #
1247次浏览 22人参与
# AI时代,哪个岗位还有“活路” #
2853次浏览 51人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152905次浏览 889人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
8021次浏览 43人参与
# XX请雇我工作 #
51155次浏览 171人参与
# 简历第一个项目做什么 #
32148次浏览 361人参与
# 简历中的项目经历要怎么写? #
311051次浏览 4265人参与
# 投格力的你,拿到offer了吗? #
178339次浏览 891人参与
# 你最满意的offer薪资是哪家公司? #
76981次浏览 375人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187605次浏览 1123人参与
# AI时代,哪些岗位最容易被淘汰 #
64730次浏览 886人参与
# 如果重来一次你还会读研吗 #
230018次浏览 2011人参与
# 正在春招的你,也参与了去年秋招吗? #
364353次浏览 2642人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务