建设一个电商网站的流程,专业seo关键词优化,深圳做网站联系电话,wordpress后台账号密码忘记题目: 解题思路#xff1a;
假设输入数值为number 分析题目#xff0c;如果想要解决这个问题#xff0c;我们需要实现两个方法#xff0c;第一个检查number是否是类斐波那契#xff0c;第二个是模拟1e7 - 0的过程#xff0c;因为是求最大的#xff0c;那么我们从1e7开始…题目: 解题思路
假设输入数值为number 分析题目如果想要解决这个问题我们需要实现两个方法第一个检查number是否是类斐波那契第二个是模拟1e7 - 0的过程因为是求最大的那么我们从1e7开始计算会节省很多时间提高效率。 一实现类斐波那契数列检查 比如实现197,那么我们需要将197拆分因为只有三位那么参与运算的就是1,9,7这三位数字构成了后续的数列197 17 , 9717 33… 那么我们只需要过构造一个窗口每次是传入数值的位数 我们可以创建一个新的数组这个数组初始缓存197。然后窗口大小是传输 数字的位数此时 a4 a1a2a3 然后窗口移动直到计算出 an number 返回 true,如果an number 那么就应该结束
代码:
public class T1 {public static void main(String[] args) {int maxFibNum 0;for (int i (int) Math.pow(10, 7); i 0; i--) {if (check(i)) {maxFibNum i;break;}}System.out.println(最大的类斐波那契循环数 maxFibNum);}public static boolean check(int num) {if (num 0) return true;int[] arr new int[10];int len 0;int temp num;while (temp 0) {arr[len] temp % 10;temp / 10;}int[] digits new int[len];for (int i 0; i len; i) {digits[i] arr[len - 1 - i];}
// 构造的新的队列
// 为什么构造这个100这个需要你尝试从小到大如果100 和 500 结果一样那么就证明这个数值设置的合理int[] newArray new int[100];System.arraycopy(digits, 0, newArray, 0, len);int index len;while (true) {int sum 0;
// 从 0 - 数字位数 , 计算下一位for (int i index - len; i index; i) {sum newArray[i];}if (sum num) break;if (sum num) return true;
// 窗口后移newArray[index] sum;}return false;}
}
// 7913837