zoukankan      html  css  js  c++  java
  • LeetCode算法题-Max Consecutive Ones(Java实现)

    这是悦乐书的第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+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

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

  • 相关阅读:
    DOM--6 向应用程序中加入ajax
    javascript优化--12模式(设计模式)03
    javascript优化--11模式(设计模式)02
    javascript优化--14模式2(DOM和浏览器模式)
    mvc-9测试和调试
    mvc-10部署
    mvc-6依赖管理
    less
    css3 总结03
    css3 总结02
  • 原文地址:https://www.cnblogs.com/xiaochuan94/p/10322508.html
Copyright © 2011-2022 走看看