1744:你能在你最喜欢的那天吃到你最喜欢的糖果吗?
This commit is contained in:
parent
a0ba3cdecf
commit
388482234b
@ -0,0 +1,94 @@
|
|||||||
|
//给你一个下标从 0 开始的正整数数组 candiesCount ,其中 candiesCount[i] 表示你拥有的第 i 类糖果的数目。同时给你一个二维数
|
||||||
|
//组 queries ,其中 queries[i] = [favoriteTypei, favoriteDayi, dailyCapi] 。
|
||||||
|
//
|
||||||
|
// 你按照如下规则进行一场游戏:
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// 你从第 0 天开始吃糖果。
|
||||||
|
// 你在吃完 所有 第 i - 1 类糖果之前,不能 吃任何一颗第 i 类糖果。
|
||||||
|
// 在吃完所有糖果之前,你必须每天 至少 吃 一颗 糖果。
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// 请你构建一个布尔型数组 answer ,满足 answer.length == queries.length 。answer[i] 为 true 的条件是
|
||||||
|
//:在每天吃 不超过 dailyCapi 颗糖果的前提下,你可以在第 favoriteDayi 天吃到第 favoriteTypei 类糖果;否则 answer[
|
||||||
|
//i] 为 false 。注意,只要满足上面 3 条规则中的第二条规则,你就可以在同一天吃不同类型的糖果。
|
||||||
|
//
|
||||||
|
// 请你返回得到的数组 answer 。
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// 示例 1:
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//输入:candiesCount = [7,4,5,3,8], queries = [[0,2,2],[4,2,4],[2,13,1000000000]]
|
||||||
|
//输出:[true,false,true]
|
||||||
|
//提示:
|
||||||
|
//1- 在第 0 天吃 2 颗糖果(类型 0),第 1 天吃 2 颗糖果(类型 0),第 2 天你可以吃到类型 0 的糖果。
|
||||||
|
//2- 每天你最多吃 4 颗糖果。即使第 0 天吃 4 颗糖果(类型 0),第 1 天吃 4 颗糖果(类型 0 和类型 1),你也没办法在第 2 天吃到类型
|
||||||
|
//4 的糖果。换言之,你没法在每天吃 4 颗糖果的限制下在第 2 天吃到第 4 类糖果。
|
||||||
|
//3- 如果你每天吃 1 颗糖果,你可以在第 13 天吃到类型 2 的糖果。
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// 示例 2:
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//输入:candiesCount = [5,2,6,4,1], queries = [[3,1,2],[4,10,3],[3,10,100],[4,100,3
|
||||||
|
//0],[1,3,1]]
|
||||||
|
//输出:[false,true,true,false,false]
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// 提示:
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// 1 <= candiesCount.length <= 105
|
||||||
|
// 1 <= candiesCount[i] <= 105
|
||||||
|
// 1 <= queries.length <= 105
|
||||||
|
// queries[i].length == 3
|
||||||
|
// 0 <= favoriteTypei < candiesCount.length
|
||||||
|
// 0 <= favoriteDayi <= 109
|
||||||
|
// 1 <= dailyCapi <= 109
|
||||||
|
//
|
||||||
|
// Related Topics 数学
|
||||||
|
// 👍 53 👎 0
|
||||||
|
|
||||||
|
package leetcode.editor.cn;
|
||||||
|
|
||||||
|
//1744:你能在你最喜欢的那天吃到你最喜欢的糖果吗?
|
||||||
|
public class CanYouEatYourFavoriteCandyOnYourFavoriteDay {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
//测试代码
|
||||||
|
Solution solution = new CanYouEatYourFavoriteCandyOnYourFavoriteDay().new Solution();
|
||||||
|
solution.canEat(new int[]{5, 2, 6, 4, 1}, new int[][]{{4, 100, 30}, {1, 3, 1}});
|
||||||
|
}
|
||||||
|
|
||||||
|
//力扣代码
|
||||||
|
//leetcode submit region begin(Prohibit modification and deletion)
|
||||||
|
class Solution {
|
||||||
|
public boolean[] canEat(int[] candiesCount, int[][] queries) {
|
||||||
|
long[] sum = new long[candiesCount.length];
|
||||||
|
int flag = 0;
|
||||||
|
sum[0] = candiesCount[0];
|
||||||
|
boolean[] result = new boolean[queries.length];
|
||||||
|
for (int i = 0; i < queries.length; i++) {
|
||||||
|
int index = queries[i][0];
|
||||||
|
if (index > flag) {
|
||||||
|
for (int j = flag + 1; j <= index; j++) {
|
||||||
|
sum[j] = sum[j - 1] + candiesCount[j];
|
||||||
|
}
|
||||||
|
flag = index;
|
||||||
|
}
|
||||||
|
if (index > 0) {
|
||||||
|
result[i] = sum[index - 1] / queries[i][2] <= queries[i][1];
|
||||||
|
result[i] = result[i] && sum[index] >= queries[i][1] + 1;
|
||||||
|
} else {
|
||||||
|
result[i] = sum[index] >= queries[i][1] + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//leetcode submit region end(Prohibit modification and deletion)
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
<p>给你一个下标从 <strong>0</strong> 开始的正整数数组 <code>candiesCount</code> ,其中 <code>candiesCount[i]</code> 表示你拥有的第 <code>i</code> 类糖果的数目。同时给你一个二维数组 <code>queries</code> ,其中 <code>queries[i] = [favoriteType<sub>i</sub>, favoriteDay<sub>i</sub>, dailyCap<sub>i</sub>]</code> 。</p>
|
||||||
|
|
||||||
|
<p>你按照如下规则进行一场游戏:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>你从第 <code><strong>0</strong></code><strong> </strong>天开始吃糖果。</li>
|
||||||
|
<li>你在吃完 <strong>所有</strong> 第 <code>i - 1</code> 类糖果之前,<strong>不能</strong> 吃任何一颗第 <code>i</code> 类糖果。</li>
|
||||||
|
<li>在吃完所有糖果之前,你必须每天 <strong>至少</strong> 吃 <strong>一颗</strong> 糖果。</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>请你构建一个布尔型数组 <code>answer</code> ,满足 <code>answer.length == queries.length</code> 。<code>answer[i]</code> 为 <code>true</code> 的条件是:在每天吃 <strong>不超过</strong> <code>dailyCap<sub>i</sub></code><sub> </sub>颗糖果的前提下,你可以在第 <code>favoriteDay<sub>i</sub></code> 天吃到第 <code>favoriteType<sub>i</sub></code> 类糖果;否则 <code>answer[i]</code> 为 <code>false</code> 。注意,只要满足上面 3 条规则中的第二条规则,你就可以在同一天吃不同类型的糖果。</p>
|
||||||
|
|
||||||
|
<p>请你返回得到的数组<em> </em><code>answer</code> 。</p>
|
||||||
|
|
||||||
|
<p> </p>
|
||||||
|
|
||||||
|
<p><strong>示例 1:</strong></p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<b>输入:</b>candiesCount = [7,4,5,3,8], queries = [[0,2,2],[4,2,4],[2,13,1000000000]]
|
||||||
|
<b>输出:</b>[true,false,true]
|
||||||
|
<strong>提示:</strong>
|
||||||
|
1- 在第 0 天吃 2 颗糖果(类型 0),第 1 天吃 2 颗糖果(类型 0),第 2 天你可以吃到类型 0 的糖果。
|
||||||
|
2- 每天你最多吃 4 颗糖果。即使第 0 天吃 4 颗糖果(类型 0),第 1 天吃 4 颗糖果(类型 0 和类型 1),你也没办法在第 2 天吃到类型 4 的糖果。换言之,你没法在每天吃 4 颗糖果的限制下在第 2 天吃到第 4 类糖果。
|
||||||
|
3- 如果你每天吃 1 颗糖果,你可以在第 13 天吃到类型 2 的糖果。
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p><strong>示例 2:</strong></p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<b>输入:</b>candiesCount = [5,2,6,4,1], queries = [[3,1,2],[4,10,3],[3,10,100],[4,100,30],[1,3,1]]
|
||||||
|
<b>输出:</b>[false,true,true,false,false]
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p> </p>
|
||||||
|
|
||||||
|
<p><strong>提示:</strong></p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><code>1 <= candiesCount.length <= 10<sup>5</sup></code></li>
|
||||||
|
<li><code>1 <= candiesCount[i] <= 10<sup>5</sup></code></li>
|
||||||
|
<li><code>1 <= queries.length <= 10<sup>5</sup></code></li>
|
||||||
|
<li><code>queries[i].length == 3</code></li>
|
||||||
|
<li><code>0 <= favoriteType<sub>i</sub> < candiesCount.length</code></li>
|
||||||
|
<li><code>0 <= favoriteDay<sub>i</sub> <= 10<sup>9</sup></code></li>
|
||||||
|
<li><code>1 <= dailyCap<sub>i</sub> <= 10<sup>9</sup></code></li>
|
||||||
|
</ul>
|
||||||
|
<div><div>Related Topics</div><div><li>数学</li></div></div>\n<div><li>👍 49</li><li>👎 0</li></div>
|
@ -0,0 +1,33 @@
|
|||||||
|
<p>给你一个整数数组 <code>nums</code> 和一个正整数 <code>k</code> ,返回长度为 <code>k</code> 且最具 <strong>竞争力</strong> 的<em> </em><code>nums</code> 子序列。</p>
|
||||||
|
|
||||||
|
<p>数组的子序列是从数组中删除一些元素(可能不删除元素)得到的序列。</p>
|
||||||
|
|
||||||
|
<p>在子序列 <code>a</code> 和子序列 <code>b</code> 第一个不相同的位置上,如果 <code>a</code> 中的数字小于 <code>b</code> 中对应的数字,那么我们称子序列 <code>a</code> 比子序列 <code>b</code>(相同长度下)更具 <strong>竞争力</strong> 。 例如,<code>[1,3,4]</code> 比 <code>[1,3,5]</code> 更具竞争力,在第一个不相同的位置,也就是最后一个位置上, <code>4</code> 小于 <code>5</code> 。</p>
|
||||||
|
|
||||||
|
<p> </p>
|
||||||
|
|
||||||
|
<p><strong>示例 1:</strong></p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<strong>输入:</strong>nums = [3,5,2,6], k = 2
|
||||||
|
<strong>输出:</strong>[2,6]
|
||||||
|
<strong>解释:</strong>在所有可能的子序列集合 {[3,5], [3,2], [3,6], [5,2], [5,6], [2,6]} 中,[2,6] 最具竞争力。
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p><strong>示例 2:</strong></p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<strong>输入:</strong>nums = [2,4,3,3,5,4,9,6], k = 4
|
||||||
|
<strong>输出:</strong>[2,3,3,4]
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p> </p>
|
||||||
|
|
||||||
|
<p><strong>提示:</strong></p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><code>1 <= nums.length <= 10<sup>5</sup></code></li>
|
||||||
|
<li><code>0 <= nums[i] <= 10<sup>9</sup></code></li>
|
||||||
|
<li><code>1 <= k <= nums.length</code></li>
|
||||||
|
</ul>
|
||||||
|
<div><div>Related Topics</div><div><li>栈</li><li>堆</li><li>贪心算法</li><li>队列</li></div></div>\n<div><li>👍 58</li><li>👎 0</li></div>
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user