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. PHP中接口与抽象类的异同点有哪些

    接口与抽象类的相同点: 1.抽象类和接口都有抽象方法 2.抽象类和接口不能创建实例对象 3.抽象类和接口使用意义相同(定义一种规范) 接口与抽象类的不同点: 1.接口中的方法必须全要是抽象方法(不能用 ...

  2. db.properties(oracle)和(mysql)

    oracle jdbc.driver=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc:oracle:thin:@localhost:1521:XEjdbc.u ...

  3. Mybatis一级缓存和二级缓存总结

    1:mybatis一级缓存:级别是session级别的,如果是同一个线程,同一个session,同一个查询条件,则只会查询数据库一次 2:mybatis二级缓存:级别是sessionfactory级别 ...

  4. [转]Xtrabackup 的 xtrabackup_binlog_pos_innodb和xtrabackup_binlog_info 文件区别

    [转自] http://julyclyde.org/?p=403 在操作 innobackupex 的时候,执行 change master to 的时候发现 xtrabackup_binlog_po ...

  5. django初始化

    Django 版本 安装 pip安装 pip install django 安装最新版本的 pip install django==1.11.11 安装指定版本的 验证安装 直接去代码中调用djang ...

  6. Vue实现mp3音乐播放及动态进度条

    今天碰到一个Vue点击mp3播放及进度条动态走动的小功能,记录一下: 首先是通过HTML5 audio标签引入音频: <template> <div class="x-fo ...

  7. 转:<context:component-scan>使用说明

    在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类 ...

  8. Numpy的基础用法

    1.用Numpy创建数组 numpy.array(object):创建数组,与array.array(typecode[, initializer])不同,array.array()只能创建一维数组 ...

  9. 详细nginx配置SSL

    1.nginx的ssl 让nginx实现用https来访问网站,http是80端口,https是443端口. https其实就是一种加密的http 2.为什么要加密 例子:在网上银行汇款,在你汇款的过 ...

  10. [Asp.net core 3.1] 通过一个小组件熟悉Blazor服务端组件开发

    通过一个小组件,熟悉 Blazor 服务端组件开发.github 一.环境搭建 vs2019 16.4, asp.net core 3.1 新建 Blazor 应用,选择 asp.net core 3 ...