zoukankan      html  css  js  c++  java
  • 【leetcode】1493. Longest Subarray of 1's After Deleting One Element

    题目如下:

    Given a binary array nums, you should delete one element from it.

    Return the size of the longest non-empty subarray containing only 1's in the resulting array.

    Return 0 if there is no such subarray. 

    Example 1:

    Input: nums = [1,1,0,1]
    Output: 3
    Explanation: After deleting the number in position 2, [1,1,1] contains 3 numbers with value of 1's.

    Example 2:

    Input: nums = [0,1,1,1,0,1,1,0,1]
    Output: 5
    Explanation: After deleting the number in position 4, [0,1,1,1,1,1,0,1] longest subarray with value of 1's is [1,1,1,1,1].

    Example 3:

    Input: nums = [1,1,1]
    Output: 2
    Explanation: You must delete one element.

    Example 4:

    Input: nums = [1,1,0,0,1,1,1,0,1]
    Output: 4
    

    Example 5:

    Input: nums = [0,0,0]
    Output: 0

    Constraints:

    • 1 <= nums.length <= 10^5
    • nums[i] is either 0 or 1.

    解题思路:分别从左往右和从右往左边路nums,记录每个下标从左往右和从右往左的连续1的个数。最后计算出从左往右和从右往左的连续1的个数的和的最大值即可。

    代码如下:

    class Solution(object):
        def longestSubarray(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
            left = []
            right = []
            count_1 = 0
            for i in nums:
                if i == 1:
                    count_1 += 1
                    left.append(count_1)
                else:
                    left.append(count_1)
                    count_1 = 0
    
            count_1 = 0
            for i in nums[::-1]:
                if i == 1:
                    count_1 += 1
                    right.insert(0,count_1)
                else:
                    right.insert(0, count_1)
                    count_1 = 0
            res = -float('inf')
            for i in range(len(nums)):
                if nums[i] == 0:
                    res = max(res,left[i] + right[i])
    
            return res if res != -float('inf') else len(nums) - 1
  • 相关阅读:
    获取Android状态栏高度的屡试不爽的方法
    在线音乐API的研究 (Part 2.1)
    Zabbix
    利用 Puppet 实现自动化管理配置 Linux 计算机集群
    django的admin后台管理如何更改为中文
    windows系统安装python3.6.3和python3.7.0
    微课程--Android--高级控件之二--标题栏
    微课程--Android--高级控件之一ListView
    微课程--Android--Fragement
    微课程--Android--界面布局总结
  • 原文地址:https://www.cnblogs.com/seyjs/p/13217781.html
Copyright © 2011-2022 走看看