题目
解题思路
要找到将数字 N N N 转换为Fibonacci数所需的最少步数,我们需要:
- 生成Fibonacci数列并与 N N N 比较
- 找到距离 N N N 最近的Fibonacci数
关键点
- 由于 N N N 最大为 1 , 000 , 000 1,000,000 1,000,000,我们只需要生成到此范围的Fibonacci数
- 最小步数就是 N N N 到最近Fibonacci数的距离
- 只需要保存最后两个Fibonacci数,不需要存储整个数列
代码
#include <iostream>
#include <cmath>
using namespace std;
class Solution {
public:
int minStepsToFib(int n) {
// 特殊情况处理
if (n == 0 || n == 1) return 0;
// 只保存最后两个Fibonacci数
int prev = 0, curr =

最低0.47元/天 解锁文章
1050

被折叠的 条评论
为什么被折叠?



