写点什么

《LeetCode 刷题报告》题解内容 Ⅲ

作者:泽En
  • 2022 年 3 月 30 日
  • 本文字数:1454 字

    阅读完需:约 5 分钟

《LeetCode刷题报告》题解内容 Ⅲ
  • 🎃本章博客题目力扣链接

  1. 33. 搜索旋转排序数组 - 力扣(LeetCode)

  2. 81. 搜索旋转排序数组 II - 力扣(LeetCode)

  3. 153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode)

  4. 70. 爬楼梯 - 力扣(LeetCode)

  5. 509. 斐波那契数 - 力扣(LeetCode)

  6. 1137. 第 N 个泰波那契数 - 力扣(LeetCode)

⌚搜索旋转排序数组

🎆题目:



🎇示例:



​​🧨提示:

  • 1 <= nums.length <= 5000

  • -10^4 <= nums[i] <= 10^4

  • nums 中每个值都是 独一无二的

  • 题目中保证数据 nums 在预先未知的某个下标上进行了旋转

  • -10^4 <= target <= 10^4

📝题解思路

  • 直接使用暴力解法,用 for 循环遍历,看看是否 num[n] == target,否则返回 -1。

int search(int* nums, int numsSize, int target){    unsigned int n = 0;    for(n=0;n<numsSize;n++)    {        if(nums[n] == target)        {            return target;        }    }    return -1;}
复制代码

⌚搜索旋转排序数组

🎆题目:



🎇示例:



🧨提示:

  • 1 <= nums.length <= 5000

  • -104 <= nums[i] <= 104

  • 题目中保证数据 nums 在预先未知的某个下标上进行了旋转

  • -10^4 <= target <= 10^4

📝题解思路

  • 这道题目和上面的题目是一样,只不过这道题目遍历的返回值已经退的循环返回不同。

bool search(int* nums, int numsSize, int target){    int n = 0;    for(n=0;n<numsSize;n++)    {        if(nums[n] == target)        {            return true;        }    }    return false;}
复制代码

⏰寻找旋转排序数组中的最小值

🎆题目:



🎇示例:


🧨提示:

  • n == nums.length

  • 1 <= n <= 5000

  • -5000 <= nums[i] <= 5000

  • nums 中的所有整数 互不相同

  • nums 原来是一个升序排序的数组,并进行了 1 至 n 次旋转

📝题解思路

这题目主要考察的是二分查找,但是我使用 for 循环遍历,再进行判断。从而相互比较,再找到数组中的最小值。

int findMin(int* nums, int numsSize){    int i = 0;    int mid = 0;    for(i=1;i<numsSize;i++)    {        if(nums[mid]>nums[i])        mid = i;    }    return nums[mid];}
复制代码

⏰爬楼梯

🎆题目:


​​

🎇示例:


​​

📝题解思路

用 for 循环,然后交换里面其中的变量值。最后 返回值进行返回,当 for 循环不满足条件的时候了,注意:这里变量 c 初始化必须是 1。

int climbStairs(int n) {    int a = 0, b = 0, c = 0;    int i;    for (i = 1; i <= n; i++)    {        a = b;      //a = 0,b = 0,a = 1        b = c;      //b = 1,        c = a + b;  //c = 1,c = 2    }    return c;}
复制代码

⏱斐波那契数列

🎆题目:



🎇示例:


​​

🧨提示:

  • 0 <= n <= 30

📝题解思路

这道题目一开始就想到用递归了,完蛋没救了。用递归的话,代码少,但是效率是比较低。

以如下被以递推的方法定义:

F

(0)=0,F(1)=1,F(n)=F(n - 1)+F(n - 2)


int fib(int N){    if (N == 0 || N == 1)     {        return N;    }    return fib(N - 1) + fib(N - 2);}
复制代码

⏱第 N 个斐波那契数列

🎆题目:



🎇示例:


🧨提示:

  • 0 <= n <= 37

  • 答案保证是一个 32 位整数,即 answer <= 2^31 - 1

📝题解思路

首先 n = 0 或者 n == 1 以及 2,分别都是返回 0 和 1 的。再根据这个来做这道题思路:且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2。

int tribonacci(int n){    if(n==0)    {        return 0;    }    if(n==1||n==2)    {        return 1;    }    int a=0,b=1,c=1;    int d = 0;    int i = 0;    for(i=3;i<=n;i++)    {        d=a+b+c;        a=b;        b=c;        c=d;     }     return d;}
复制代码


​​

发布于: 2022 年 03 月 30 日阅读数: 31
用户头像

泽En

关注

好像没有😅 2022.01.29 加入

CSDN嵌入式领域新星创作者、2021年度博客之星物联网与嵌入式开发TOP5、2022博客之星TOP100 掘金创作者

评论

发布
暂无评论
《LeetCode刷题报告》题解内容 Ⅲ_3月月更_泽En_InfoQ写作平台