当前位置: 首页 > article >正文

【Leetcode题单】(01 数组篇)刷题关键点总结01【数组的遍历】

【Leetcode题单】(01 数组篇)刷题关键点总结01【数组的遍历】(4题)

  • Easy数组的遍历
    • 485. 最大连续 1 的个数 Easy
    • 495. 提莫攻击 Easy
    • 414. 第三大的数 Easy
    • 628. 三个数的最大乘积 Easy

大家好,这里是新开的LeetCode刷题系列,以后尽量一天更新一个小章节。此系列应超过400题。
数组篇01《数组的遍历》,共4道题,均简单题。
注意看重点部分,总结起来是这一类题的规律。

Easy数组的遍历

485. 最大连续 1 的个数 Easy

485. 最大连续 1 的个数
在这里插入图片描述

    public int findMaxConsecutiveOnes(int[] nums) {
        int maxCount = 0, count = 0;
        for (int num : nums) {
            if (num == 1) {
                count++;
            } else {
                maxCount = Math.max(maxCount, count);
                count = 0;
            }
        }
        maxCount = Math.max(maxCount, count);
        return maxCount;
    }

重点

  • for循环遍历数组的格式
  • Math.max() 的使用
  • 采用 count 计数当前连续1数, maxCount 计数最大count
  • 在代码尾部加一次判定

495. 提莫攻击 Easy

495. 提莫攻击
在这里插入图片描述
在这里插入图片描述

	public int findPoisonedDuration(int[] timeSeries, int duration) {
        int total = 0;
        for(int i = 1; i < timeSeries.length; i++){
            if (timeSeries[i] - timeSeries[i-1] < duration) {
                total += timeSeries[i] - timeSeries[i-1];
            } else {
                total += duration;
            }
        } 
        total += duration;
        return total;
    }

重点

  • timeSeries前后相减计算时长
  • for循环的开始位是1
  • 尾部增加duration

414. 第三大的数 Easy

414. 第三大的数
在这里插入图片描述

public int thirdMax(int[] nums) {
        long a = Long.MIN_VALUE, b = Long.MIN_VALUE, c = Long.MIN_VALUE;
        for (int num : nums) {
            if (num > a) {
                c = b;
                b = a;
                a = num;
            } else if (num > b && num < a) {
                c = b;
                b = num;
            } else if (num > c && num < b) {
                c = num;
            }
        }
        return c == Long.MIN_VALUE ? (int)a : (int)c;
    }

重点

  • Long.MIN_VALUE,这个取决于题目中的测试用例范围
  • num > b && num < a 这个是因为b!= a,此处看清题目
  • 结尾记得将数据类型转为int

628. 三个数的最大乘积 Easy

628. 三个数的最大乘积
在这里插入图片描述

public int maximumProduct(int[] nums) {
        int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE;
        int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;
        for(int num : nums){
            if(max1 < num){
                max3 = max2;
                max2 = max1;
                max1 = num;
            }else if(max2 < num){
                max3 = max2;
                max2 = num;
            }else if(max3 < num){
                max3 = num;
            }
            if(num < min1){
                min2 = min1;
                min1 = num;
            }else if(num < min2){
                min2 = num;
            }
        }
        return Math.max(max1 * max2 * max3, min1 * min2 * max1);
    }

重点

  • 使用 minn 和 maxn 来指代第n大的数和第n小的数
  • 数据的初始化
  • 问题转化为求 三个最大数乘积 与 最大数与两个最小数乘积 的最大值
  • 这种做法可以当做模版使用,找第n大的数。

这个系列希望能够帮助大家提高刷题效率,发现系列算法题目的常规思路,更快a题,速通Leetcode

b站【软件柠檬】以后会不定期分享计算机领域基础知识,求职干货,为大家助力实习和春秋招offer
公众号【软件柠檬】也会不定期更新优质内容,分享优质干货资料,希望能够帮助到大家~
❤️这里是 软件柠檬, 让我们一起学习进步~❤️


http://www.kler.cn/a/155216.html

相关文章:

  • MySQL的SQL书写顺序和执行顺序
  • 什么时候需要复写hashcode()和compartTo方法
  • 基于混合配准策略的多模态医学图像配准方法研究
  • 随手记:简单实现纯前端文件导出(XLSX)
  • Redis高可用-主从复制
  • uniapp+vue2 设置全局变量和全局方法 (兼容h5/微信小程序)
  • java游戏攻略资讯网站的设计与实现springboot+vue
  • C 语言实现TCP 通信,以及地址复用
  • 《凤凰项目》读书笔记
  • LeetCode刷题笔记第80题:删除有序数组中的重复项 II
  • pandas基础1
  • 观察者设计模式
  • ZooKeeper 如何保证数据一致性?
  • 二叉树链式结构的实现和二叉树的遍历以及判断完全二叉树
  • CentOS配置本地源
  • Python 内置异常
  • 内存函数​(memcpy、memmove、memset、memcmp)
  • 奇葩问题:arp缓存、ip地址冲突(实际是ip地址被占用导致arp缓存出现问题)
  • GEE:不同方向的线性检测算子
  • 【C语言学习疑难杂症】第9期:关于%*s以及%*d等的使用
  • 点云从入门到精通技术详解100篇-基于三维点云的工件曲面轮廓检测与机器人打磨轨迹规划(下)
  • Raft 算法
  • C# Onnx 阿里达摩院开源DAMO-YOLO目标检测
  • 采集工具-免费采集器下载
  • ARM架构基础简介
  • SCAU:各位数字