我是靠谱客的博主 温柔小鸭子,最近开发中收集的这篇文章主要介绍贪心,数学思想5.13,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2169. 得到 0 的操作数

给你两个 非负 整数 num1num2

每一步 操作 中,如果 num1 >= num2 ,你必须用 num1num2 ;否则,你必须用 num2num1

  • 例如,num1 = 5num2 = 4 ,应该用 num1num2 ,因此,得到 num1 = 1num2 = 4 。然而,如果 num1 = 4num2 = 5 ,一步操作后,得到 num1 = 4num2 = 1

返回使 num1 = 0num2 = 0操作数

示例 1:

输入:num1 = 2, num2 = 3
输出:3
解释:
- 操作 1 :num1 = 2 ,num2 = 3 。由于 num1 < num2 ,num2 减 num1 得到 num1 = 2 ,num2 = 3 - 2 = 1 。
- 操作 2 :num1 = 2 ,num2 = 1 。由于 num1 > num2 ,num1 减 num2 。
- 操作 3 :num1 = 1 ,num2 = 1 。由于 num1 == num2 ,num1 减 num2 。
此时 num1 = 0 ,num2 = 1 。由于 num1 == 0 ,不需要再执行任何操作。
所以总操作数是 3 。

第一遍直接模拟过就行,但是在两数相差悬殊的时候,会产生大量相同的减法步骤,可以使用除法跳过这一步骤。辗转相除就可以了

2171. 拿出最少数目的魔法豆

给你一个  整数数组 beans ,其中每个整数表示一个袋子里装的魔法豆的数目。

请你从每个袋子中 拿出 一些豆子(也可以 不拿出),使得剩下的 非空 袋子中(即 至少 还有 一颗 魔法豆的袋子)魔法豆的数目 相等 。一旦魔法豆从袋子中取出,你不能将它放到任何其他的袋子中。

请你返回你需要拿出魔法豆的 最少数目

开始的大概产生了和正确的思路靠边的想法,就是用总数减去还剩下的,就可以得到拿出来的,先排序,然后遍历,维护最小值就可以了

2170. 使数组变成交替数组的最少操作数

给你一个下标从 0 开始的数组 nums ,该数组由 n 个正整数组成。

如果满足下述条件,则数组 nums 是一个 交替数组

  • nums[i - 2] == nums[i] ,其中 2 <= i <= n - 1
  • nums[i - 1] != nums[i] ,其中 1 <= i <= n - 1

在一步 操作 中,你可以选择下标 i 并将 nums[i] 更改任一 正整数。

返回使数组变成交替数组的 最少操作数

思路一眼就有,代码实现举步维艰

Counter函数来自collection库

传入一个可迭代对象,返回出现次数的字典,还提供了,Counter().most_common(),传入一个k返回一个list[tuple] 里面为值前k大的键值对

最后

以上就是温柔小鸭子为你收集整理的贪心,数学思想5.13的全部内容,希望文章能够帮你解决贪心,数学思想5.13所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部