【Leetcode -509.斐波那契数 -520.检测大写字母】

简介: 【Leetcode -509.斐波那契数 -520.检测大写字母】

Leetcode - 509.斐波那契数

题目:斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。

该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。

也就是:

F(0) = 0,F(1) = 1

F(n) = F(n - 1) + F(n - 2),其中 n > 1

给定 n ,请计算 F(n) 。

示例 1:

输入:n = 2

输出:1

解释:F(2) = F(1) + F(0) = 1 + 0 = 1

示例 2:

输入:n = 3

输出:2

解释:F(3) = F(2) + F(1) = 1 + 1 = 2

示例 3:

输入:n = 4

输出:3

解释:F(4) = F(3) + F(2) = 2 + 1 = 3

方法一、递归

int fib(int n)
    {
        //0或1返回0或1
        if (n <= 1)
            return n;
        //2返回1
        else if (n == 2)
            return 1;
        //大于2的数返回前两个数之和
        else
            return fib(n - 1) + fib(n - 2);
    }

方法二、动态规划

int fib(int n)
    {
        //0返回0
        if (n == 0)
            return 0;
        //从第三位开始等于前两项的和,迭代往后走
        int p = 0, q = 0, r = 1;
        for (int i = 2; i <= n; i++)
        {
            p = q;
            q = r;
            r = p + q;
        }
        return r;
    }

如图所示,相加完后迭代往后走;

Leetcode - 520.检测大写字母

题目:我们定义,在以下情况时,单词的大写用法是正确的:

全部字母都是大写,比如 “USA” 。

单词中所有字母都不是大写,比如 “leetcode” 。

如果单词不只含有一个字母,只有首字母大写, 比如 “Google” 。

给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。

示例 1:

输入:word = “USA”

输出:true

示例 2:

输入:word = “FlaG”

输出:false

思路是直接遍历字符串,首先判断第一个字母是否是大写字母,如果是,将flag标记为1,再遍历剩下的字母,统计大写字母的个数;最后判断只有一个大写字母且是第一个字母大写,或者全是小写字母,或者全是大写字母,符合其中一个就返回true,否则返回false;

bool detectCapitalUse(char* word)
    {
        //只有一个字母,返回true
        if (strlen(word) == 1)
            return true;
        //flag记录第一个是大写字母,是大写字母的话改成1
        //uppercase记录大写字母的个数
        int flag = 0, uppercase = 0;
        if (word[0] >= 'A' && word[0] <= 'Z')
            flag = 1;
        //遍历字符串,统计大写字母数量
        for (int i = 0; i < strlen(word); i++)
        {
            if (word[i] >= 'A' && word[i] <= 'Z')
                uppercase++;
        }
        //最后判断只有首字母大写,或者全是大写字母,或者uppercase等于0,即全是小写字母,其中一个为1,就返回true
        if (uppercase == 1 && flag || uppercase == strlen(word) || !uppercase)
            return true;
        //否则返回false
        return false;
    }
目录
相关文章
|
7月前
|
算法 程序员 索引
【Leetcode 程序员面试金典 02.08】 —— 环路检测 |双指针
我们可以使用双指针解决本题,由数学推导可知:a 的距离为(环长度的倍数 - b),即 tmp 指针从头节点走到环开头节点等于 slow 指针走到环开头节点的距离
|
7月前
|
Java
leetcode-509:斐波那契数
leetcode-509:斐波那契数
482 0
|
4月前
|
Python
【Leetcode刷题Python】509. 斐波那契数
LeetCode第509题"斐波那契数"的两种Python解决方案:一种是递归方法,另一种是使用滚动数组的迭代方法,以计算第n个斐波那契数。
33 2
|
7月前
leetcode:520. 检测大写字母
leetcode:520. 检测大写字母
35 0
|
7月前
|
算法
leetcode-2013:检测正方形
leetcode-2013:检测正方形
50 0
|
7月前
|
Go
golang力扣leetcode 2013.检测正方形
golang力扣leetcode 2013.检测正方形
37 0
|
7月前
|
Go
golang力扣leetcode 509.斐波那契数
golang力扣leetcode 509.斐波那契数
36 0
leetcode 509 斐波那契数
今天重新看了下动态规划, 它和递归的区别就是,它是自下而上的。 还了解到状态压缩 如果我们发现每次状态转移只需要 DP table 中的一部分,那么可以尝试用状态压缩来缩小 DP table 的大小,只记录必要的数据 于是就刷了这道简答题,用到了状态压缩
43 0
|
算法
代码随想录算法训练营第三十八天 | LeetCode 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
代码随想录算法训练营第三十八天 | LeetCode 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
58 0
LeetCode题:70爬楼梯,126斐波那契数
LeetCode题:70爬楼梯,126斐波那契数
59 0