leetcode真的是一个学习阅读理解的好地方

860. 柠檬水找零

"""
因为用户支付的只会有5、10、20
对于10元的用户必须找一个5
对于20元的用户可以找(三个5)或者(一个10一个5),每次都从大的开始找起来
"""
class Solution:
def lemonadeChange(self, bills) -> bool:
five = 0
ten = 0
for i in bills:
if i == 5:
five += 1
if i == 10:
if five == 0:
return False
five -= 1
ten += 1
if i == 20:
if ten == 0:
if five < 3:
return False
five -= 3
else:
if not five:
return False
ten -= 1
five -= 1
return True

944. 删列造序

class Solution:
def minDeletionSize(self, A) -> int:
if len(A[0]) == 1 or not A[0]:
return 0
sequence = 0
minus = 0
while sequence < len(A[0]):
preTmp = 0
i = 1
# 判断该列是否应该被删除,即后一个是否大于等于前一个
while i != len(A):
if A[i][sequence] < A[preTmp][sequence]:
minus += 1
break
preTmp = i
i += 1
sequence += 1
return minus

1005. K 次取反后最大化的数组和

"""
因为可以对同一个进行多次处理,所以先把负的都变成正数,然后就一直对最小的进行取反操作
"""
class Solution:
def largestSumAfterKNegations(self, A, K: int) -> int:
A = sorted(A)
tmp = K
# 将负数先变成正数
for i in range(K):
if A[i] < 0:
A[i] = -A[i]
else:
tmp = i
break
A = sorted(A)
# 一直处理最小值
while tmp < K:
A[0] = -A[0]
tmp += 1
return sum(A)

1029. 两地调度

"""
先将所有人全部安排飞往B市,再选择N个人改变它们的行程,让它们飞往A市,那么每改变一个人就会额外付出priceA-priceB的费用,
谁的priceA-priceB最小(因为priceA-priceB是可正可负的),我们就让谁去。
"""
class Solution:
def twoCitySchedCost(self, costs) -> int:
costs = sorted(costs, key=lambda x:x[0] - x[1])
s = 0
n = len(costs)//2
for i in range(n):
s += costs[i][0] + costs[i + n][1]
return s

1046. 最后一块石头的重量

"""
每次都找最大的两块出来,然后进行粉碎操作,开始下一次操作前仍然需要重新排序
"""
class Solution:
def lastStoneWeight(self, stones) -> int:
if len(stones) == 1:
return stones[0]
while stones:
if len(stones) == 1:
return stones[0]
stones = sorted(stones, reverse=True)
a = stones.pop(0)
b = stones.pop(0)
if a != b:
stones.append(abs(a - b))
return 0

1217. 玩筹码

"""
已知单数筹码移至单数筹码所在位置,或双数筹码移至双数筹码所在位置上时, 将不用付出代价。
但如果是单数筹码移至双数筹码的位置上,或双->单, 将需要付出 1 的代价,成堆的筹码移动时,也需要付出对应筹码个数的代价。
那就先把奇数位置的全部移动到A,偶数位置的全部移动到B,然后比较A和B那个点的筹码多,再把筹码少的移动过去。
奇数移动到偶数(偶数移动到奇数)的代价为少的一个的数量
"""
class Solution:
def minCostToMoveChips(self, chips) -> int:
odd = 0
even = 0
for i in range(chips):
if chips[i] % 2 == 0:
even += 1
continue
odd += 1
return min(even, odd)

1221. 分割平衡字符串

"""
直观思路,为遇到的每一个R(L)找到配对的。
"""
class Solution:
def balancedStringSplit(self, s: str) -> int:
vis = set()
res = 0
for i in range(len(s)):
if i in vis:
continue
sign = 0
vis.add(i)
for j in range(i+1, len(s)):
# 如果遇到了同类,那么等下即使遇到了配对的,也不能立即配对
if s[j] == s[i]:
sign += 1
vis.add(j)
else:
sign -= 1
vis.add(j)
if sign == -1:
res += 1
break
return res

Leetcode题解 - 贪心算法部分简单题目代码+思路(860、944、1005、1029、1046、1217、1221)的更多相关文章

  1. Leetcode题解 - 树、DFS部分简单题目代码+思路(700、671、653、965、547、473、46)

    700. 二叉搜索树中的搜索 - 树 给定二叉搜索树(BST)的根节点和一个值. 你需要在BST中找到节点值等于给定值的节点. 返回以该节点为根的子树. 如果节点不存在,则返回 NULL. 思路: 二 ...

  2. Leetcode题解 - DFS部分简单题目代码+思路(113、114、116、117、1020、494、576、688)

    这次接触到记忆化DFS,不过还需要多加练习 113. 路径总和 II - (根到叶子结点相关信息记录) """ 思路: 本题 = 根到叶子结点的路径记录 + 根到叶子结点 ...

  3. Leetcode题解 - 树部分简单题目代码+思路(105、106、109、112、897、257、872、226、235、129)

    树的题目中递归用的比较多(但是递归是真难弄 我

  4. Leetcode题解 - 链表简单部分题目代码+思路(21、83、203、206、24、19、876)

  5. Leetcode题解 - BFS部分题目代码+思路(896、690、111、559、993、102、103、127、433)

    和树有关的题目求深度 -> 可以利用层序遍历 -> 用到层序遍历就想到使用BFS 896. 单调数列 - 水题 class Solution: def isMonotonic(self, ...

  6. Leetcode题解 - DFS部分题目代码+思路(756、1034、1110、491、721、988)

    756. 金字塔转换矩阵 """ 学到的新知识: from collections import defaultditc可以帮我们初始化字典,不至于取到某个不存在的值的时 ...

  7. LeetCode解题记录(贪心算法)(二)

    1. 前言 由于后面还有很多题型要写,贪心算法目前可能就到此为止了,上一篇博客的地址为 LeetCode解题记录(贪心算法)(一) 下面正式开始我们的刷题之旅 2. 贪心 763. 划分字母区间(中等 ...

  8. python常用算法(6)——贪心算法,欧几里得算法

    1,贪心算法 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的的时在某种意义上的局部最优解. 贪心算法并不保证会得到最优解,但 ...

  9. poj 1088 滑雪(贪心算法)

    思想: (贪心算法 ,看到题目是中文才做的) 先对数组中的数据进行排序,从最小的数据计算 当前的顶点的可以滑行的最大值=max(周围可达的顶点的可以滑行的最大值)+1 这样计算最后产生的路径肯定是最大 ...

随机推荐

  1. Springboot操作Elasticsearch

    常见的日志系统是基于logstach+elasticsearch+kibna框架搭建的,但是有时候kibana的查询无法满足我们的要求,因此有时需要代码去操作es,本文后续都以es代替elastics ...

  2. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(1)- Boot简介

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的BootROM功能简介. 截止目前为止i.MX RTxxx系列已公布的芯片仅有一款i.MXRT60 ...

  3. ElasticSearch如何一次查询出全部数据—基于Scroll

    Elasticsearch 查询结果默认只显示10条,可以通过设置from及size来达到分页的效果(详见附3),但是 from + size <= 10,000,因为index.max_res ...

  4. 深入浅出Spring(一)

    现在很多的企业级项目中基本上都会用到了Spring框架,那么为什么会出现Spring,Spring是什么?这次的博文我主要为大家简单介绍一下Spring. Java EE优缺点 我们都知道在2003年 ...

  5. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(4)- OTP及其烧写方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的OTP. 在i.MXRTxxx启动系列第二篇文章 Boot配置(ISP Pin, OTP) 里痞子 ...

  6. MySQL主从扩展知识

    6月29/7月2日任务 说明:这两天无新课,主要是扩充知识面注意:这两天的任务,需要回专贴.需要你们通过看这些东西总结成自己的心得. 不能照搬,必须要自己理解,能看多少就看多少,看不完也没有关系,但一 ...

  7. markdown使用方法介绍

    markdown使用方法介绍 最近在更新微信公众号的时候发现有很多格式无法编辑尤其是涉及到代码的,每次都要截图贴上去,费时费力.穷则生变,研究了markdown格式,果然豁然开朗,一片新的天地瞬间打开 ...

  8. shell脚本持续更改

    1.用shell查看磁盘是否大于80%并发送邮箱告警. 分析如何查看磁盘占用: # df -h | grep /dev/vda1 | awk '{print $5}' |cut -d "%& ...

  9. 论文阅读 | Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

    简述 在文本语义相似度等句子对的回归任务上,BERT , RoBERTa 拿到sota. 但是,它要求两个句子都被输入到网络中,从而导致巨大开销:从10000个句子集合中找到最相似的sentence- ...

  10. iOS RSA加解密签名和验证

    转自:http://www.jianshu.com/p/81b0b54436b8 Pre:在公司负责了一个项目,需要用到iOS RSA验证签名的功能.后台给我的仅仅是一个公钥的字符串.经过起初的一段时 ...