【LeetCode】剑指 Offer(4)

简介: 【LeetCode】剑指 Offer(4)

写在前面:

军训好累,没话说了。


题目:剑指 Offer 10- I. 斐波那契数列 - 力扣(Leetcode)


题目的接口:

class Solution {
public:
    int fib(int n) {
    }
};

解题思路:

直接根据斐波那契数列的特性,


写一个循环即可。


代码:

class Solution {
public:
    int fib(int n) {
        //设置f1和f2两个变量作为计算数列下一个数的前两个数
        int f1 = 0;
        int f2 = 1;
        //这是题目的要求,我们利用一下,这样整形变量的大小就够用
        int m = (1e9 + 7);
        //这是第一个数和第二个数的情况
        if(n == 0)
        {
            return 0;
        }
        if(n == 1)
        {
            return 1;
        }
        int ret = 0;
        //写一个循环,根据斐波那锲数列规则计算下一个值
        for(int i = 0;i
        {
            //按题目要求取模
            ret = (f1 + f2) % m;
            f1 = f2;
            f2 = ret;
        }
        return ret;
    }
};

过啦!!!


循环就是比递归快,时间超过100%了。


题目:剑指 Offer 10- II. 青蛙跳台阶问题 - 力扣(Leetcode)


题目的接口:

class Solution {
public:
    int numWays(int n) {
    }
};

解题思路:

这道题一开始看的时候我是有点懵的,


然后我就算了一下条几级台阶会有几种方法,


0级台阶1种方法;(题目给了个示例)


1级台阶1种方法;


2级台阶2种方法;


3级台阶3种方法;


(如果先跳1级,就变成2级台阶的跳法;先跳2级,就变成1级台阶的跳法)


1 + 2 就等于3种方法。


4级台阶5种方法。


(如果先跳1级,就变成3级台阶的跳法;先跳2级,就变成2级台阶的跳法)


3 + 2 就等于5种方法。


这时,我们惊喜的发现,这不就是一个斐波那契数列吗,


我当场复用上一段代码。(记得要注意细节)


代码:

class Solution {
public:
    int numWays(int n) {
        //设置f1和f2两个变量作为计算数列下一个数的前两个数
        int f1 = 1;//记得改一下细节
        int f2 = 1;
        //这是题目的要求,我们利用一下,这样整形变量的大小就够用
        int m = (1e9 + 7);
        //这是第一个数和第二个数的情况
        if(n == 0)
        {
            return 1;//记得改一下细节
        }
        if(n == 1)
        {
            return 1;
        }
        int ret = 0;
        //写一个循环,根据斐波那锲数列规则计算下一个值
        for(int i = 0;i
        {
            //按题目要求取模
            ret = (f1 + f2) % m;
            f1 = f2;
            f2 = ret;
        }
        return ret;
    }
};

过啦!!!


小总结:

刷题的意义之一,


其实就是当我们再次遇到类似的题目的时候,


我们能比别人更加容易想到更好的思路,就像这两道题目一样。


写在最后:

以上就是本篇文章的内容了,感谢你的阅读。


如果喜欢本文的话,欢迎点赞和评论,写下你的见解。


如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。


之后我还会输出更多高质量内容,欢迎收看。


相关文章
|
8天前
|
算法 定位技术
【leetcode】剑指 Offer II 105. 岛屿的最大面积-【深度优先DFS】
【leetcode】剑指 Offer II 105. 岛屿的最大面积-【深度优先DFS】
19 0
|
8天前
|
Go
golang力扣leetcode 剑指Offer II 114. 外星文字典
golang力扣leetcode 剑指Offer II 114. 外星文字典
24 0
|
8天前
「LeetCode」剑指 Offer 40. 最小的k个数
「LeetCode」剑指 Offer 40. 最小的k个数
30 0
|
8天前
leetcode 剑指 Offer 32 - III. 从上到下打印二叉树 III
leetcode 剑指 Offer 32 - III. 从上到下打印二叉树 III
24 0
|
8天前
leetcode 剑指 Offer 32 - II. 从上到下打印二叉树 II
leetcode 剑指 Offer 32 - II. 从上到下打印二叉树 II
24 0
|
8天前
/leetcode 剑指 Offer 32 - I. 从上到下打印二叉树
/leetcode 剑指 Offer 32 - I. 从上到下打印二叉树
22 0
|
8天前
leetcode 剑指 Offer 40. 最小的k个数
leetcode 剑指 Offer 40. 最小的k个数
20 0
|
8天前
LeetCode 剑指 Offer 28. 对称的二叉树
LeetCode 剑指 Offer 28. 对称的二叉树
18 0
|
8天前
剑指Offer LeetCode 面试题25. 合并两个排序的链表
剑指Offer LeetCode 面试题25. 合并两个排序的链表
18 0
|
8天前
剑指Offer LeetCode 面试题24. 反转链表
剑指Offer LeetCode 面试题24. 反转链表
15 0