zoukankan      html  css  js  c++  java
  • LeetCode——Max Consecutive Ones

    LeetCode——Max Consecutive Ones

    Question

    Given a binary array, find the maximum number of consecutive 1s in this array.

    Example 1:
    Input: [1,1,0,1,1,1]
    Output: 3
    Explanation: The first two digits or the last three digits are consecutive 1s.
    The maximum number of consecutive 1s is 3.
    Note:

    The input array will only contain 0 and 1.
    The length of input array is a positive integer and will not exceed 10,000

    解题思路

    用stack求解。

    具体实现

    class Solution {
    public:
        int findMaxConsecutiveOnes(vector<int>& nums) {
            stack<int> st;
            int max_len = 0;
            for (int i : nums) {
                if (i == 0) {
                    if (st.size() > max_len)
                        max_len = int(st.size());
                    // 清空栈
                    while(!st.empty())
                        st.pop();
                } else
                    st.push(i);
            }
            return max(int(st.size()), max_len);
        }
    };
    

    用一个计数器也可以求解。

    class Solution {
    public:
        int findMaxConsecutiveOnes(vector<int>& nums) {
            int max=0,cur=0;
            for(int i=0;i<nums.size();i++)
            {
                if(nums[i]&1)
                {
                    max=max>++cur?max:cur;
                }
                else cur=0;
            }
            return max;
        }
    };
    

    时间复杂度都是O(n),但是计数器更快一些。

  • 相关阅读:
    paper:Exploiting Query Reformulations for Web Search Result Diversification
    Z3
    IDA pro 类型参考
    Angr包含什么
    Gcc编译选项
    Angr
    一张图系列之PLT-GOT
    ELF头文件
    BROP_轮子
    Pwn_
  • 原文地址:https://www.cnblogs.com/zhonghuasong/p/6658520.html
Copyright © 2011-2022 走看看