1744. Can You Eat Your Favorite Candy on Your Favorite Day?

ss
Jan 31, 2021

--

今天打周賽, 很慘的遭受慘敗, 主要還是在面對題目沒有想要看透核心, 還是只是想要趕快去解

這題其實看到當下真的是很沒耐心, 他最大的問題是在看懂題目在看麻, 其實他應該也不用給出一個陣列要解完, 我說明一下題意

總共有k種type的糖, 如果要吃到第k種, 前面一個一定要先吃完

每種糖有幾顆不確定

另外 會給出幾天吃, 並問說在第幾天能不能吃到第k種糖

光這邊就亂了, 簡化就是 我在第n天就是要吃到k口味的, 每天有限制最多能吃幾顆

所以 問題分成兩個核心

1. 在第n天時, n天是否吃完了k -1種糖, 吃完你才可以吃第k個2. 在第n天時, n-1天是否已經把k種糖都吃完了

第二個case是我打周賽時忽略的, 有一種情況是就算我前幾天, 每天吃一顆, 還是會在要到第n天時, 就先吃完了

在了解上面兩個狀況, 就可以開始設計code

首先, 我們先總合, 在吃到每種type完, 總共都要吃幾顆

class Solution {
public:
vector<bool> canEat(vector<int>& candiesCount, vector<vector<int>>& queries) {
vector<bool> res;
vector<long> sumCandy(candiesCount.begin(), candiesCount.end());
for(int i = 1; i < candiesCount.size();i++){
sumCandy[i] += sumCandy[i -1];
}
for(int i = 0; i < queries.size();i++){
int type = queries[i][0];
int day = queries[i][1];
long cap = queries[i][2];


if((day + 1) *cap > (type==0?0:sumCandy[type-1]) && (day + 1) <= sumCandy[type] ){
res.push_back(true);
}else{
res.push_back(false);
}

}
return res;
}
};

--

--

ss
ss

No responses yet