
贪心
wjy_1126
这个作者很懒,什么都没留下…
展开
-
IPO-贪心
题目给你 n 个项目。对于每个项目 i ,它都有一个纯利润 profits[i] ,和启动该项目需要的最小资本 capital[i] 。最初,你的资本为 w 。当你完成一个项目时,你将获得纯利润,且利润将被添加到你的总资本中。总而言之,从给定项目中选择 最多 k 个不同项目的列表,以 最大化最终资本 ,并输出最终可获得的最多资本。示例输入:k = 2, w = 0, profits = [1,2,3], capital = [0,1,1]输出:4算法在可以做的前提下,优.原创 2022-02-13 15:22:59 · 175 阅读 · 0 评论 -
把数组排成最小的数
题目输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个示例输入: [3,30,34,5,9]输出: “3033459”算法先转换成字符串数组,然后排序。代码class Solution { public String minNumber(int[] nums) { int n = nums.length; String[] str = new String[n]; f.原创 2022-02-13 14:48:24 · 131 阅读 · 0 评论 -
分发饼干-贪心
题目对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例输入: g = [1,2], s = [1,2,3]输出: 2算法先排序优先用最低的代价满足胃口最低的小朋友代码class Solution { public int .原创 2022-02-13 14:41:37 · 152 阅读 · 0 评论 -
有效三角形的个数-贪心、二分
题目给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。示例输入: nums = [4,2,3,4]输出: 4算法先排序对于每一个确定的nums[i]点,从它的前面找出能组成三角形的两个点left = 0, right = i - 1;如果此时可以组成三角形(nums[left] + num[right] > nums[i]),则nums[left] ~num[right-1]都可以与num[right]和nums[i]组成三角形.原创 2022-02-13 12:07:57 · 683 阅读 · 1 评论 -
最大数-贪心
题目给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。示例输入:nums = [3,30,34,5,9]输出:“9534330”算法先把整数数组转换为字符串数组,然后写一个比较器,比较规则是两个字符串拼在一起后,谁大谁在前面。然后调用比较方法。代码class Solution { public String largestNumber(int[] nums) { int n = nums.length.原创 2022-02-13 11:21:58 · 403 阅读 · 0 评论 -
救生艇-贪心
贪心给定数组 people 。people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit。每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。返回 承载所有人所需的最小船数 。示例输入:people = [3,5,3,4], limit = 5输出:4代码class Solution { public int numRescueBoats(int[] people, int limit) { A.原创 2022-02-13 11:08:46 · 84 阅读 · 0 评论 -
盛最多水的容器-贪心
题目给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。示例输入:[1,8,6,2,5,4,8,3,7]输出:49算法left指向左边,right指向右边,夹紧。夹紧过程中给长度不断变小,要想容积变大,只能高度变大,所以高度小的一边就要移动代码class Solutio.原创 2022-02-13 10:39:17 · 283 阅读 · 0 评论 -
有效的括号字符串-贪心
题目给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。*可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。一个空字符串也被视为有效字符串示例输入: “(*)”输出: True算法low,right代表左括号最少、最多分别多少个low最小值为0(不懂为啥)代码class Solution { public boolean checkValidString(String s) { .原创 2022-02-10 17:22:09 · 311 阅读 · 0 评论 -
跳跃游戏-贪心
题目给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例输入:nums = [3,2,1,0,4]输出:false算法last表示可以跳到i点的第一个点如果last==i,则表示没有点可以跳到i点,那i点以及后面的点肯定调不到代码class Solution { public boolean canJump(int[] nums) { .原创 2022-02-10 13:35:37 · 1716 阅读 · 0 评论