当前位置: 首页 > article >正文

算法刷题Day1

BM47 寻找第k大

第一天就随便记录吧,万事开头难,我好不容易开的头,就别难为自己,去追求高质量了。嘿嘿嘿
题目 传送门

解题思路一:维护一个大小为k的最小堆。最后返回堆顶元素。
代码:

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param a int整型一维数组
# @param n int整型
# @param K int整型
# @return int整型
#
from heapq import heappushpop
from typing import List


#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param a int整型一维数组
# @param n int整型
# @param K int整型
# @return int整型
#
from heapq import heappushpop
from typing import List


class Solution:
    def findKth(self , a: List[int], n: int, K: int) -> int:
        # write code here
        # 维护一个大小为k的最小堆。最后返回堆顶元素
        import heapq
        heap = []
        # 将前k个数压进数组
        for i in range(K):
            heapq.heappush(heap, a[i])
        print(f"heap = {heap}")
        for i in range(K,n):
            # 取堆顶元素,如果堆顶元素小,poppush,如果堆顶元素一样,push。如果堆顶元素大,pass
            heap_top = heap[0]
            print(f"{a[i], heap_top}")
            if a[i] > heap_top:
                heapq.heappop(heap)
                heapq.heappush(heap,a[i])
            elif a[i] == heap_top:
                heapq.heappush(heap,a[i])
            else:
                pass
        print(heap)
        return heap[-K]
so = Solution()
a,n,K = [10,10,9,9,8,7,5,6,4,3,4,2],12,3
print(so.findKth(a,n,K)) 

解题思路二:二分查找,这个思路很值得学习
思路二 原帖传送门
等我实现实现


http://www.kler.cn/a/417997.html

相关文章:

  • C++小问题
  • PPT不能编辑,按钮都是灰色,怎么办?
  • CentOS使用chrony服务进行时间同步源设置脚本
  • 网络安全相关证书资料
  • Attention显存统计与分析
  • 在RockyLinux9.4上安装Microk8s
  • 探索 IntelliJ IDEA 中 Spring Boot 运行配置
  • 不玩PS抠图了,改玩Python抠图
  • QT实战--qt各种按钮实现
  • yagmail邮件发送库:如何用Python实现自动化邮件营销?
  • boss上测试面试宝典总结
  • 【MySQL】Win10同时安装MySQL8 MySQL5.7教程
  • VS与SQL Sever(C语言操作数据库)
  • Scala模式匹配——高阶用法
  • Python 和 Pyecharts 对Taptap相关数据可视化分析
  • SQL优化与性能——数据库设计优化
  • 走进科学json版:在 JSON 格式中,字符串值必须使用双引号 “ 来界定,而不能使用单引号 ‘
  • 【Python网络爬虫笔记】5-(Request 带参数的get请求) 爬取豆瓣电影排行信息
  • 洛谷 P2415 集合求和 C语言
  • 学习日志017--python的几种排序算法
  • 根据导数的定义计算导函数
  • 数据库学习记录02
  • 学习嵩山版《Java 开发手册》:编程规约 - 命名风格(P13 ~ P14)
  • 【操作系统不挂科】<内存管理-分页与分段(15)>选择题&简答题(带答案与解析)
  • C#运动控制技术详解:基础、实现与应用实例
  • 【S500无人机】--地面端下载