0
点赞
收藏
分享

微信扫一扫

每日一题Day<2022/2/9>

登高且赋 2022-02-09 阅读 49

1)题目:

力扣1414. 和为 K 的最少斐波那契数字数目icon-default.png?t=M0H8https://leetcode-cn.com/problems/find-the-minimum-number-of-fibonacci-numbers-whose-sum-is-k/

2)代码:

class Solution666 {
    public int findMinFibonacciNumbers(int k) {
        int[] ints = new int[50];   //记录会使用的斐波那契数;
        int i=2;
        ints[0]=1;
        ints[1]=1;
        int counter=0;  //记录结果
       while (true){
           ints[i]=ints[i-1]+ints[i-2]; //ints[i++]=ints[i-1]+ints[i-2];死循环
           if (ints[i]>k)
               break;
           i++;
       }
       while (k!=0){
           int temp=find(k,ints);
           k-=temp;
           counter++;
       }
return counter;
    }
    //二分法查找最接近k且<=k的数。
    public int find(int k,int []ints){
        int left=0;
        int right=ints.length-1;
        while (left<right){
            int mid=(left+right+1)/2;
            if (ints[mid]<=k&&ints[mid]!=0) //由于数组存在大量0,ints[i]=0应属于大于k的部分。
                left=mid;
            else
                right=mid-1;

        }
        return ints[left];
    }

}

3)结果:

 

举报

相关推荐

每日一题Day<2022/2/15>

每日一题Day<2022/1/20>

【每日一题】Day9 选择题

寒假-每日一题-day 08

每日一题day01

每日一题day1

AcWing 寒假每日一题2022

0 条评论