leetcode875. 爱吃香蕉的珂珂

清疚 2022-09-10 15:16 234阅读 0赞

在这里插入图片描述
思路

  1. 二分查找,吃的最大速度是数组中的最大值,吃的最小速度是1,二分法查找符合条件的速度,每次更新最小值
  2. 第一眼没看出来是二分查找,还需要练,这个就是暴力,只不过暴力的少了一点。从最小值到最大值的遍历

    int isOk(int* piles, int pilesSize, int v, int h)
    {

    1. int i = 0;
    2. int count = 0;
    3. for (i = 0; i < pilesSize; i++) {
    4. count = count + piles[i] / v;
    5. if (piles[i] % v) {
    6. count ++;
    7. }
    8. }
    9. return count<=h;

    }

  1. int minEatingSpeed(int* piles, int pilesSize, int h)
  2. {
  3. if (pilesSize > h)
  4. return -1;
  5. int i = 0;
  6. int max = 0;
  7. for (i = 0; i < pilesSize; i++) {
  8. if (max < piles[i]) {
  9. max = piles[i];
  10. }
  11. }
  12. int vmin = 1;
  13. int vmax = max;
  14. int mid = 0;
  15. int v = 10000000000;
  16. while (vmin < vmax) {
  17. mid = vmin + (max - vmin) / 2;
  18. if (isOk(piles, pilesSize, mid, h)) {
  19. if (v > mid) {
  20. v = mid;
  21. }
  22. vmax = mid - 1;
  23. } else {
  24. vmin = mid + 1;
  25. }
  26. }
  27. return v;
  28. }

发表评论

表情:
评论列表 (有 0 条评论,234人围观)

还没有评论,来说两句吧...

相关阅读

    相关 糖果

    我爱吃糖果 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^\_^ 题目描述 圣诞节快到了,金菊巨意外