当前位置: 代码迷 >> 综合 >> LeetCode 5490.吃掉N个橘子的最少天数
  详细解决方案

LeetCode 5490.吃掉N个橘子的最少天数

热度:70   发布时间:2024-02-11 17:16:57.0

题目链接:LeetCode 5490.吃掉N个橘子的最少天数

题意:

  厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子:

吃掉一个橘子。
如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。
如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2*(n/3) 个橘子。
每天你只能从以上 3 种方案中选择一种方案。

请你返回吃掉所有 n 个橘子的最少天数

 

解题思路:

   从别人那里学到的记忆化搜索(本来以为是DP,看了数据觉得是贪心....)

能除3就除3,能除2就除2,不行减一,取最小值

class Solution {/*** @param Integer $n* @return Integer*/public  $a = array();function minDays($n) {return $this->get($n);}function get($n){//echo "n = ".$n."\n";if($n == 1){return 1;} elseif ($n <= 3){return 2;} elseif(array_key_exists($n, $this->a)){  // 此处这样用的原因是为后一次的get减少次数return $this->a[$n];} else{$this->a[$n] = min($this->get(intval($n/2) )+ $n % 2 + 1, $this->get(intval($n/3) )+ $n % 3 + 1);return $this->a[$n];}}
}