LeetCode算法题-Max Consecutive Ones(Java实现)

作者 : 开心源码 本文共945个字,预计阅读时间需要3分钟 发布时间: 2022-05-12 共193人阅读

这是悦乐书的第242次升级,第255篇原创

01 看题和准备

今天详情的是LeetCode算法题中Easy级别的第109题(顺位题号是485)。给定二进制数组,找到此数组中连续1的最大数量。例如:

输入:[1,1,0,1,1,1]

输出:3

说明:前两位或者后三位是连续的1。连续1的最大数量为3。

注意:

  • 输入数组只包含0和1。

  • 输入数组的长度是一个正整数,不会超过10,000。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

使用一个记数变量count,for循环遍历nums中的元素,遇到1时count就自加1,遇到0时,比较最大值,count归零,循环结束后,假如count不等于0,还要再取一次最大值,最后返回最大值。

public int findMaxConsecutiveOnes(int[] nums) {    int result = Integer.MIN_VALUE;    int count = 0;    for(int i=0; i<nums.length; i++){        if (nums[i] == 1) {            count++;        } else {            result = Math.max(count, result);            count = 0;        }    }    if (count != 0) {        result = Math.max(count, result);    }    return result;}

03 第二种解法

使用乘法。定义一个变量sum,遍历nums中的元素,依次加上每个元素再乘以当前元素,而后判断最大值(会判断n次,n为数组长度),最后返回最大值。

public int findMaxConsecutiveOnes2(int[] nums) {    int result = 0, sum = 0;    for (int num : nums) {        sum = (sum + num)*num;        result = Math.max(sum, result);    }    return result;}

04 小结

算法专题目前已日更超过三个月,算法题文章109+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是一律内容,假如大家有什么好的解法思路、建议或者者其余问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » LeetCode算法题-Max Consecutive Ones(Java实现)

发表回复