[学习报告]《LeetCode零基础指南》第十三轮(第三讲)一维数组

LeetCode零基础指南——一维数组

一、回顾昨日

昨天学习的内容是循环,常用的循环语句就是for循环和while循环,两者之间可以相互转换,因此具体了解其中一种就可以了。

//for循环语法格式:
for(初始化表达式;条件表达式;执行表达式){
	循环体;
}
//while循环语法格式:
初始化表达式;
while(条件表达式){
	循环体;
}

二、今日所学

今日学习内容:
《LeetCode零基础指南》(第三讲) 一维数组
在这里插入图片描述

其实在看这一部分时,我有一点点懵。
然后我想应该是这么理解吧:

在初始化数组的时候就已经给定了数组的大小,也就是一开始的时候我就准备一个大箱子,且这个箱子是多少升容量早在它生产出来的时候就已经定了,无法再进行更改。但具体放了多少东西是由我们来决定的。 哈哈,就用牛奶箱子来说吧,一箱能放12瓶牛奶,但是我只放了8瓶,任凭是谁,看到这个箱子也只会说,“喏,里面有8瓶牛奶”,这是这个箱子中内容【牛奶】的数量,而不是它的容量【能够放下多少瓶】
int a[8] = {98765};

因此,在这个数组中,它的容量是8,但它的长度是5。

在这里插入图片描述
还有这个爬楼梯问题,我不是太理解怎么就抽象成斐波拉契数列了,理是这个理我懂,但就是爬楼梯不懂,英雄哥下面的的注释我也明白,可我就是不知道为什么,就卡这了,就很纠结,这到底是怎么想出来的,我就是这个逆向思维怎么逆呀也逆不明白。好痛苦,期待大佬能带我脱离苦海,帮我想个通俗易懂的栗子。我知道肯定会有人不理解都已经讲得清清白白,为什么我还在这里头绕,别问,问也是我不知道。【无奈.jpg】

在这里插入图片描述
完了,今天问题格外多,还是我的思维问题,期待有大佬能帮忙掰扯掰扯,【拜托拜托】

三、解题记录

在这里插入图片描述
#剑指Offer II 069 山峰数组的顶部
在这里插入图片描述
这道题我其实做的很笨,题目示例给的都是最大值两边都是递增或者是递减的,一开始我就想,那就直接从头循环遍历,找到一个值比它下一个值大的元素就行,返回该值的下标,但是之后我自己编写案例的时候测试了几组类似于[24,69,100,99,29,320,79,78,67,36,26,19]这样的数组,但是它返回的是5,也就是元素320的下标。元素100也可以算是一个峰值,但是它并不是最大的元素,题目要求的是,只有该峰值两边的元素都比它小,才返回该峰值的下标。
因此我才给出如下的解决方案:

int peakIndexInMountainArray(int* arr, int arrSize){
    int max = arr[1];
    for(int i=1;i<arrSize;i++){
        if(arr[i]>max){
           max=arr[i];
        }  
    }
    for(int i=1;i<arrSize;i++){
        if(arr[i+1]<arr[i]&&arr[i]==max){
               return i;
        }
    }
    return 1;
}

第一步:先找出所有元素中的最大值;
第二步:找到一个峰值就判断它是不是最大值,如果是则直接返回,不是则继续循环遍历。

至于,其他几道题英雄哥已经讲得很清楚了。

四、总结

编程思维是真的很重要呀,如果不刻意去训练,有些点你是真的想破脑袋都没得办法。练,就得练,不自己多敲,不自己多学着点,不自己多想着点,不自己多踩几个坑,是没办法成长的。真正优秀的程序员都是伤痕累累的,我们这些小菜鸟还是得继续加油哇!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值