数学思路：一开始还没有理解题目，后来才理解了，加倍的意思就是那一分钟不加倍，下一分钟的下载量翻倍
所以直接翻倍直到最后下载量超越了要下载的插件，然后化一分钟下载即可，然后我就想了想那肯定是翻倍
然后再下载，谁会一个一个的下载？

* 

```
// 解法1：直接使用数学方法
 class Solution {
     public int leastMinutes(int n) {
     //   求出翻倍超越插件下载数量所需要的时间
     int load =1;
     int time=0;
     while(load<n){
       load=load*2;
       time++;
     }
     return time+1;
     }
 }
```

解法2：这道题既然安排到了动态规划这里，哪我也使用动态规划的思路意思一下吧
首先我先大致讲讲动态规划的大致思路：就拿四个下载量来举个例子
下载四个插件的方法有：一个一个的下载：所以dp[4]=dp[3]+1
翻倍后下载：第一天不下载：下载量2个  第2天不下载：下载量4个     第3天直接下载
也就是下载量为n/2的那天不下载然后花一天下载  dp[4]=dp[2]+1
所以先加倍的方程为：零件数目减半所花的时间加上1天 因为/是整除所以下加上1 可以想象3个零件减半所化的时间应该是2个零件而且不是一个 依次类推 dp[i]=d[(i+1)/2]+1;
所以就可以的到动态规划转移方程：dp[i]=Math.min(dp[i-1]+1,dp[(i+1)/2]+1)

* 

```
class Solution {
    public int leastMinutes(int n) {
        // 设置一个动态规划数组
        int[] dp=new int[n+1];
        dp[1]=1;
        for(int i=2;i<=n;i++){
           dp[i]=Math.min(dp[i-1]+1,dp[(i+1)/2]+1);
        }
        return dp[n];
    }
}
```

