P1744 你能在你最喜欢的那天吃到你最喜欢的糖果吗? 题解 今天的题目看起来啰嗦,实际上就是判断两种极限情况 一天只吃1颗,但是在favoriteDay之前(favoriteDay-1)就已经把favoriteType类型的糖吃完了 一天吃dailyCap颗,但是在第favoriteDay还没有吃完favoriteType类型之前的糖 用前缀和来计算favoriteType之前的糖果数目 陷阱之一是day从0开始 陷阱之二是使用int类型会溢出 123456789101112131415161718192021222324252627class Solution { public boolean[] canEat(int[] candiesCount, int[][] queries) { boolean[] result = new boolean[queries.length]; long[] pre = new long[candiesCount.length]; pre[0] = candiesCount[0]; for(int i=1;i<candiesCount.length;i++){ pre[i] = pre[i-1]+candiesCount[i]; } for(int i=0;i<queries.length;i++){ result[i] = judge(queries[i],candiesCount,pre); } return result; } public boolean judge(int[] cod,int[] array,long[] pre){ int type = cod[0]; long day = cod[1]; long cap = cod[2]; if(day>=pre[type]){ return false; } if(cap*(day+1)<=((type==0)?0:pre[type-1])){ return false; } return true; }} ≡∧