贪心
贪心
Sophia_fez
干啥啥不行,可爱第一名.jpg
展开
-
leetcode *1775. 通过最少操作次数使数组的和相等(2022.12.7)
给你两个长度可能不等的整数数组 nums1 和 nums2 。两个数组中的所有值都在 1 到 6 之间(包含 1 和 6)。每次操作中,你可以选择 任意 数组中的任意一个整数,将它变成 1 到 6 之间 任意 的值(包含 1 和 6)。请你返回使 nums1 中所有数的和与 nums2 中所有数的和相等的最少操作次数。如果无法使两个数组的和相等,请返回 -1 。示例 1:示例 2:示例 3:提示:【解题思路1】排序+贪心一个长度为n的数组的总和范围是[n,6n],倘若两个数组的总和范围无交集,那么原创 2022-12-07 01:17:11 · 316 阅读 · 0 评论 -
leetcode 1710. 卡车上的最大单元数(周赛222)(2022.11.15)
请你将一些箱子装在 一辆卡车 上。整数 truckSize 表示卡车上可以装载 箱子 的 最大数量。只要箱子数量不超过 truckSize ,你就可以选择任意箱子装到卡车上。numberOfUnitsPerBoxi 是类型 i 每个箱子可以装载的单元数量。numberOfBoxesi 是类型 i 的箱子的数量。返回卡车可以装载 单元 的 最大 总数。原创 2022-11-15 23:12:12 · 63 阅读 · 0 评论 -
leetcode *1414. 和为 K 的最少斐波那契数字数目(2022.2.3)
【题目】*1414. 和为 K 的最少斐波那契数字数目给你数字 k ,请你返回和为 k 的斐波那契数字的最少数目,其中,每个斐波那契数字都可以被使用多次。斐波那契数字定义为:F1 = 1F2 = 1Fn = Fn-1 + Fn-2 , 其中 n > 2 。数据保证对于给定的 k ,一定能找到可行解。示例 1:输入:k = 7输出:2 解释:斐波那契数字为:1,1,2,3,5,8,13,……对于 k = 7 ,我们可以得到 2 + 5 = 7 。示例 2:输入:k = 10原创 2022-02-03 23:07:12 · 385 阅读 · 0 评论 -
leetcode *881. 救生艇(2021.8.26)
【题目】*881. 救生艇第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。返回载到每一个人所需的最小船数。(保证每个人都能被船载)。示例 1:输入:people = [1,2], limit = 3输出:1解释:1 艘船载 (1, 2)示例 2:输入:people = [3,2,2,1], limit = 3输出:3解释:3 艘船分别载 (1, 2), (2) 和 (3)示例 3原创 2021-09-01 11:22:06 · 75 阅读 · 0 评论 -
leetcode *1877. 数组中最大数对和的最小值(2021.7.20)
【题目】*1877. 数组中最大数对和的最小值一个数对 (a,b) 的 数对和 等于 a + b 。最大数对和 是一个数对数组中最大的 数对和 。比方说,如果我们有数对 (1,5) ,(2,3) 和 (4,4),最大数对和 为 max(1+5, 2+3, 4+4) = max(6, 5, 8) = 8 。给你一个长度为 偶数 n 的数组 nums ,请你将 nums 中的元素分成 n / 2 个数对,使得:nums 中每个元素 恰好 在 一个 数对中,且最大数对和 的值 最小 。请你在最优数对划原创 2021-07-20 18:29:09 · 98 阅读 · 0 评论 -
leetcode *1846. 减小和重新排列数组后的最大元素(2021.7.15)
【题目】*1846. 减小和重新排列数组后的最大元素给你一个正整数数组 arr 。请你对 arr 执行一些操作(也可以不进行任何操作),使得数组满足以下条件:arr 中 第一个 元素必须为 1 。任意相邻两个元素的差的绝对值 小于等于 1 ,也就是说,对于任意的 1 <= i < arr.length (数组下标从 0 开始),都满足 abs(arr[i] - arr[i - 1]) <= 1 。abs(x) 为 x 的绝对值。你可以执行以下 2 种操作任意次:减小 arr 中原创 2021-07-15 11:48:58 · 168 阅读 · 1 评论 -
leetcode *1833. 雪糕的最大数量(2021.7.2)
【题目】*1833. 雪糕的最大数量夏日炎炎,小男孩 Tony 想买一些雪糕消消暑。商店中新到 n 支雪糕,用长度为 n 的数组 costs 表示雪糕的定价,其中 costs[i] 表示第 i 支雪糕的现金价格。Tony 一共有 coins 现金可以用于消费,他想要买尽可能多的雪糕。给你价格数组 costs 和现金量 coins ,请你计算并返回 Tony 用 coins 现金能够买到的雪糕的 最大数量 。注意:Tony 可以按任意顺序购买雪糕。示例 1:输入:costs = [1,3,2,4,原创 2021-07-02 10:42:56 · 147 阅读 · 0 评论 -
leetcode *767. 重构字符串(待研究)(2020.11.30)
【题目】*767. 重构字符串给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。若可行,输出任意可行的结果。若不可行,返回空字符串。示例 1:输入: S = "aab"输出: "aba"示例 2:输入: S = "aaab"输出: ""注意:S 只包含小写字母并且长度在[1, 500]区间内。【解题思路1】基于最大堆的贪心算法class Solution { public String reorganizeString(String S) {原创 2020-12-03 10:50:54 · 171 阅读 · 0 评论 -
leetcode *452. 用最少数量的箭引爆气球(2020.11.23)
【题目】*452. 用最少数量的箭引爆气球在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。原创 2020-11-23 16:29:32 · 165 阅读 · 0 评论 -
leetcode *134. 加油站(待研究)(2020.11.18)
【题目】*134. 加油站在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例 1:输入: gas = [1,2,3,4,5]cost = [原创 2020-11-18 09:41:49 · 404 阅读 · 0 评论 -
leetcode *402. 移掉K位数字(待研究)(2020.11.15)
【题目】*402. 移掉K位数字给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。注意:num 的长度小于 10002 且 ≥ k。num 不会包含任何前导零。示例 1 :输入: num = "1432219", k = 3输出: "1219"解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。示例 2 :输入: num = "10200", k = 1输出: "200"解释: 移掉首位的 1 剩下的数字为 200.原创 2020-11-15 11:12:29 · 242 阅读 · 0 评论 -
leetcode *1024. 视频拼接(2020.10.24)
【题目】*1024. 视频拼接你将会获得一系列视频片段,这些片段来自于一项持续时长为 T 秒的体育赛事。这些片段可能有所重叠,也可能长度不一。视频片段 clips[i] 都用区间进行表示:开始于 clips[i][0] 并于 clips[i][1] 结束。我们甚至可以对这些片段自由地再剪辑,例如片段 [0, 7] 可以剪切成 [0, 1] + [1, 3] + [3, 7] 三部分。我们需要将这些片段进行再剪辑,并将剪辑后的内容拼接成覆盖整个运动过程的片段([0, T])。返回所需片段的最小数目,如果原创 2020-10-24 11:27:28 · 1398 阅读 · 0 评论 -
leetcode *763. 划分字母区间(2020.10.22)
【题目】*763. 划分字母区间字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例 1:输入:S = "ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果为 "ababcbaca", "defegde", "hijhklij"。每个字母最多出现在一个片段中。像 "ababcbacadefegde", "hijhklij" 的划分是错误的,因为划分的片段数较少。原创 2020-10-22 10:19:44 · 138 阅读 · 0 评论 -
leetcode *5477. 排布二进制网格的最少交换次数(周赛200)
【题目】*5477. 排布二进制网格的最少交换次数给你一个 n x n 的二进制网格 grid,每一次操作中,你可以选择网格的 相邻两行 进行交换。一个符合要求的网格需要满足主对角线以上的格子全部都是 0 。请你返回使网格满足要求的最少操作次数,如果无法使网格符合要求,请你返回 -1 。主对角线指的是从 (1, 1) 到 (n, n) 的这些格子。示例 1:输入:grid = [[0,0,1],[1,1,0],[1,0,0]]输出:3示例 2:输入:grid = [[0,1,1,0],原创 2020-10-07 08:49:51 · 166 阅读 · 0 评论 -
leetcode **1505. 最多 K 次交换相邻数位后得到的最小整数(周赛196)(待研究)
【题目】**1505. 最多 K 次交换相邻数位后得到的最小整数给你一个字符串 num 和一个整数 k 。其中,num 表示一个很大的整数,字符串中的每个字符依次对应整数上的各个 数位 。你可以交换这个整数相邻数位的数字 最多 k 次。请你返回你能得到的最小整数,并以字符串形式返回。示例 1:输入:num = "4321", k = 4输出:"1342"解释:4321 通过 4 次交换相邻数位得到最小整数的步骤如上图所示。示例 2:输入:num = "100", k = 1输出:"0原创 2020-10-05 16:34:24 · 247 阅读 · 0 评论 -
leetcode *剑指 Offer 31. 栈的压入、弹出序列 & *946. 验证栈序列
【题目】*剑指 Offer 31. 栈的压入、弹出序列 & *946. 验证栈序列输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。 例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:原创 2020-09-15 16:26:16 · 147 阅读 · 0 评论 -
leetcode *剑指 Offer 14- II. 剪绳子 II(快速幂求余)
【题目】*剑指 Offer 14- II. 剪绳子 II给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m - 1] 。请问 k[0]k[1]…*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入: 2原创 2020-09-14 12:25:27 · 184 阅读 · 0 评论 -
leetcode *5496. 你可以获得的最大硬币数目(周赛203)
【题目】*5496. 你可以获得的最大硬币数目有 3n 堆数目不一的硬币,你和你的朋友们打算按以下方式分硬币:每一轮中,你将会选出 任意 3 堆硬币(不一定连续)。Alice 将会取走硬币数量最多的那一堆。你将会取走硬币数量第二多的那一堆。Bob 将会取走最后一堆。重复这个过程,直到没有更多硬币。给你一个整数数组 piles ,其中 piles[i] 是第 i 堆中硬币的数目。返回你可以获得的最大硬币数目。示例 1:输入:piles = [2,4,1,2,7,8]输出:9解释:选出原创 2020-08-23 13:14:32 · 424 阅读 · 1 评论 -
leetcode **410. 分割数组的最大值(2020.7.25)
【题目】**410. 分割数组的最大值给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自的和的最大值原创 2020-07-25 11:14:52 · 166 阅读 · 1 评论 -
leetcode *55. 跳跃游戏(2020.4.17)
【题目】*55. 跳跃游戏给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false...原创 2020-04-17 14:34:58 · 192 阅读 · 0 评论