Leetcode 每日一题和每日一题的下一题刷题笔记 13/30

229 阅读2分钟

Leetcode 每日一题和每日一题的下一题刷题笔记 13/30

写在前面

这是我参与更文挑战的第13天,活动详情查看:更文挑战

快要毕业了,才发现自己被面试里的算法题吊起来锤。没办法只能以零基础的身份和同窗们共同加入了力扣刷题大军。我的同学们都非常厉害,他们平时只是谦虚,口头上说着自己不会,而我是真的不会。。。乘掘金鼓励新人每天写博客,我也凑个热闹,记录一下每天刷的前两道题,这两道题我精做。我打算每天刷五道题,其他的题目嘛,也只能强行背套路了,就不发在博客里了。

本人真的只是一个菜鸡,解题思路什么的就不要从我这里参考了,编码习惯也需要改进,各位如果想找刷题高手请教问题我觉得去找 宫水三叶的刷题日记 这位大佬比较好。我在把题目做出来之前尽量不去看题解,以免和大佬的内容撞车。

另外我也希望有得闲的大佬提供一些更高明的解题思路给我,欢迎讨论哈!

好了废话不多说开始第十三天的前两道题吧!

2021.6.13 每日一题

278. 第一个错误的版本

这道题用二分查找,计算中间的数时要注意把计算式改一下,防止越界。


// The API isBadVersion is defined for you.
// bool isBadVersion(int version);

class Solution {
public:
    int firstBadVersion(int n) {
        int left = 1, right = n;
        while (left < right) {
            int mid = left + (right - left) / 2;
            if (isBadVersion(mid)) {
                right = mid;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }
};

image.png

有一个测试用例会用到 int 最大值,一加就越界,所以菜的形式变了一下。

2021.6.13 每日一题下面的题

1137. 第 N 个泰波那契数

这个题应该还能求一下特征方程的解然后把通项公式写出来,之后套公式也行,但是递归最简单。


class Solution {
public:
    int dp[38];
    int tribonacci(int n) {
        if(!n) dp[n] = 0;
        else if(n == 1 || n == 2) dp[n] = 1;
        else if(!dp[n]) dp[n] = tribonacci(n - 1) + tribonacci(n - 2) + tribonacci(n - 3);
        return dp[n];
    }
};

image.png

小结

今天的题真简单,过节去了。

参考链接