栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

leetcode 第 303 场周赛

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode 第 303 场周赛

第 303 场周赛 总结
  • 第一个出现两次的字母
  • 相等行列对
  • 设计食物评分系统
  • 优质数对的数目
  • 总结




第一个出现两次的字母

简单题,遍历列表,找到第二个重复出现的数据跳出循环

class Solution:
    def repeatedCharacter(self, s: str) -> str:
        ans = set()
        for i in s:
            if i in ans:return i
            ans.add(i)


相等行列对

基本就是先行遍历,将对应行的数组用字典形式存储,key是行数据,value是出现次数。
然后列也同理建一个字典。最后遍历两个字典,相同key的项目value相乘最后加起来。

不过第一次用python写,不知道咋把list作为key存储,就先硬写。

之后参考大佬代码(不得不说,python有时候code太优雅了)

class Solution:
    def equalPairs(self, grid: List[List[int]]) -> int:
        cnt = Counter(tuple(row) for row in grid)
        return sum(cnt[col] for col in zip(*grid))

zip和tuple能这样用我是第一次见到



设计食物评分系统

简单的构造题,由于要输出分数最高的菜,考虑用小顶堆的数据结构,
存储时分数取负也是为了小顶堆的架构

class FoodRatings:
    def __init__(self, foods: List[str], cuisines: List[str], ratings: List[int]):
        self.fs = {}
        self.cs = defaultdict(list)
        for f, c, r in zip(foods, cuisines, ratings):
            self.fs[f] = [-r, c]
            heappush(self.cs[c], (-r, f))

    def changeRating(self, food: str, newRating: int) -> None:
        f = self.fs[food]
        heappush(self.cs[f[1]], (-newRating, food))
        f[0] = -newRating

    def highestRated(self, cuisine: str) -> str:
        h = self.cs[cuisine]
        while h[0][0] != self.fs[h[0][1]][0]:  
            heappop(h)
        return h[0][1]


优质数对的数目

虽说是困难题,但其实逻辑很清晰。

考虑两个数对应位的分布
1 1 or 1 and 1 sum 2
0 1 or 1 and 0 sum 1
1 0 or 1 and 0 sum 1
0 0 or 0 and 0 sum 0
可以看出,计算后的结果其实是两个数二进制后所以1数目相加,
统计后,接个循环

class Solution:
    def countExcellentPairs(self, nums: List[int], k: int) -> int:
        cnt = Counter(x.bit_count() for x in set(nums))
        res = 0
        for k1, v1 in cnt.items():
            for k2, v2 in cnt.items():
                if k1 + k2 >= k:  
                    res += v1 * v2
        return res

看了题解区,原来还可以进行后缀优化的操作,真是tql

总结

摸了好几个月,重新做题的感觉一塌糊涂,而且从c++换到python编程,代码思路也有一定的转变,不过学到很多python的操作就是了。
接下来每天应该都会摸几题,然后每周打打周赛恢复一下手感(不能再咸鱼下去了)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1033785.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号