🇨🇳
阿臻的学习笔记
  • 🤖AI
    • 📑README
    • 🕒Scheduling
      • 一种JSSP的DRL环境
    • 📜Paper
      • 神经协同过滤
      • 非侵入信号深度学习
      • 肾透析移植机器学习
      • 心理学随机森林
      • P300数据学习
    • ⚒️Pytorch
      • 1.1数据基础
      • 1.2自动梯度
      • 1.3神经网络
      • 1.4模型实现
      • 2数据操作
    • 🛠️Ray+Gym
    • 📃Graph Neural
      • 图神经网络基础
      • Contrastive Multi-View Representation Learning on Graphs
    • 📽️Deep Learning
      • 《第一章》
      • 《第二章》
      • 《第三章》
      • 《第四章》
      • 台湾陈蕴侬视频2020
    • 🔨MXNet
      • 《第一章》《第二章》
      • 《第三章》
      • 《第四章》
      • 《第五章》
      • 《第六章》
      • 《第七章》
      • 《第八章》
      • 《第九章》
      • 《第十章》
  • 👨‍🏭Study
    • 📔Algorithm
      • Leetcode
        • 第一天(乱刷)
        • 第二天(栈)
        • 第三天(栈)
        • 第四天(堆)(贪心)
        • 第五天(贪心)
        • 第六天(贪心)
        • 第七天(排序)
        • 第八天(排序)
        • 第九天(排序)
        • 第十天(位运算)
        • 第十一天(位运算)
        • 第十二天(位运算)
        • 第十三天(位运算)
        • 第十四天(树)
        • 第十五天(树)
        • 第十六天(树)
        • 第十七天(树)
        • 第十八天(树)
        • 第十九天(树)
        • 第二十天(树)
        • 第二十一天(树)
        • 第二十二天(并查集)
        • 第二十三天(并查集)
        • 第二十四天(DFS)(图)
        • 第二十五天(图)(设计)
        • 第二十六天(拓扑)
        • 第二十七天(字典树)
        • 第二十八天(字典树)
        • 第二十九天(树状数组)(二叉搜索树)
        • 第三十天(递归)
        • 第三十一天(脑筋急转弯)
        • 第三十二天(脑筋急转弯)
        • 第三十三天(记忆化)
        • 第三十四天(队列)
        • 第三十五天(队列)
        • 第三十六天(极小化极大)
        • 第三十七天(几何)
        • 第三十八天(蓄水池抽样)
        • 第三十九天(数组)
        • 第四十天(数组)
        • 第四十一天(数组)
        • 第四十二天(数组)
        • 第四十三天(数组)
        • 第四十四天(数组)
        • 第四十五天(数组)
        • 第四十六天(数组)
      • Sort
        • 最小堆
        • 归并排序(merge_sort)
    • 📓Knowledge
      • python补码
    • 🔧Other
      • pythonic语法
      • Ubuntu备忘
由 GitBook 提供支持
在本页

这有帮助吗?

导出为 PDF
  1. Study
  2. Algorithm
  3. Leetcode

第四天(堆)(贪心)

今天完成题目: 1045, 1577,703 1046: 最后一块石头

  • a,b=b,a可以快速实现交换

  • 使用heapq包来实现堆,但是里面默认只有最小堆

  • 也可以使用内置的隐藏函数实现最大堆,速度快但耗内存

  • heapq的最大堆没有实现插入后调整的函数

1577:找出最小的n个数

  • 继续使用heapq包实现,调用heapq.nsmallest(n, arr)实现,但是速度貌似还能改进

703:数据流中的第k个大的数

  • 注意,不一定要用大顶堆,然后找出第k个大

  • 使用小顶堆,切割出最大的k个值,之后顶部就是第k个大的值了

heapq包的使用

  1. heapq.heapify可以原地把一个list调整成堆[小顶堆] 而 heapq.nlargest 会调成大顶堆

  2. heapq.heappop可以弹出堆顶,并重新调整

  3. heapq.heappush可以新增元素到堆中,不会调整

  4. heapq.heapreplace可以替换堆顶元素,并调整下

  5. 为了维持为K的大小,初始化的时候可能需要删减,后面需要做处理就是如果不满K个就新增,否则做替换;

  6. heapq其实是对一个list做原地的处理,第一个元素就是最小的,直接返回就是最小的值

贪心算法完成题目: 1221 ,1518 1221:分割平衡字符串

  • 没有看清题意,错误理解了平衡字符串一定要对称,写错了

  • 后面才发现平衡字符串是指包含的字母数量相同即可,通过balance变量,进行增减,为0时便是一个平衡子串

1518:换酒问题

  • 简单,通过整除//和求模%循环一下就出来了,记得理清思路

上一页第三天(栈)下一页第五天(贪心)

最后更新于3年前

这有帮助吗?

👨‍🏭
📔