Python每日一练(20230517) 最大连续1的个数 I\II\III

简介: Python每日一练(20230517) 最大连续1的个数 I\II\III

对应的leetcode题号: 485、487、1004


1. 最大连续1的个数 I Max Consecutive Ones


给定一个二进制数组 nums , 计算其中最大连续 1 的个数。


示例 1:

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

输出:3

解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.


示例 2:

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

输出:2


提示:

   1 <= nums.length <= 10^5

   nums[i] 不是 0 就是 1.


代码1:

class Solution:
    def findMaxConsecutiveOnes(self, nums):
        if not nums:
            return 0
        count = 0
        max_count = 0
        for i in range(len(nums)):
            if nums[i] == 1:
                count += 1
            else:
                max_count = max(max_count, count)
                count = 0
        max_count = max(max_count, count)
        return max_count
if __name__ == '__main__':
    s = Solution()
    nums = [1,1,0,1,1,1]
    print(s.findMaxConsecutiveOnes(nums))
    nums = [1,0,1,1,0,1]
    print(s.findMaxConsecutiveOnes(nums))

代码2:

class Solution:
    def findMaxConsecutiveOnes(self, nums):
        res = 0
        i = 0
        j = len(nums)-1
        while i <= j:
            if nums[i] == 0:
                i += 1
            elif nums[j] == 0:
                j -= 1
            else:
                res += 1
                i += 1
                j -= 1
        return res
if __name__ == '__main__':
    s = Solution()
    nums = [1,1,0,1,1,1]
    print(s.findMaxConsecutiveOnes(nums))
    nums = [1,0,1,1,0,1]
    print(s.findMaxConsecutiveOnes(nums))

输出:

3

2


2. 最大连续1的个数 II Max Consecutive Ones


给定一个二进制数组,你可以最多将 1 个 0 翻转为 1,找出其中最大连续 1 的个数。


示例 :

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

输出:4

解释:翻转第一个 0 可以得到最长的连续 1。 当翻转以后,最大连续 1 的个数为 4。


提示:

  • 1 <= nums.length <= 10^5
  • nums[i] 不是 0 就是 1.



代码:

python

输出:



3. 最大连续1的个数 III Max Consecutive Ones


给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k0 ,则返回 数组中连续 1 的最大个数


示例 1:

输入:nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2

输出:6

解释:[1,1,1,0,0,1,1,1,1,1,1]

粗体数字从 0 翻转到 1,最长的子数组长度为 6。


示例 2:

输入:nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], k = 3

输出:10

解释:[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]

粗体数字从 0 翻转到 1,最长的子数组长度为 10。


提示:

   1 <= nums.length <= 10^5

   nums[i] 不是 0 就是 1

   0 <= k <= nums.length


代码:

python

输出:









目录
相关文章
|
5月前
|
Python 人工智能
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
88 1
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
|
5月前
|
Shell Unix Linux
Linux 终端命令之文件浏览(3) less
Linux 终端命令之文件浏览(3) less
60 0
Linux 终端命令之文件浏览(3) less
|
5月前
|
Rust
Rust 编程小技巧摘选(8)
Rust 编程小技巧摘选(8)
187 0
Rust 编程小技巧摘选(8)
|
5月前
|
算法 C++ 机器人
力扣 C++|一题多解之动态规划专题(1)
力扣 C++|一题多解之动态规划专题(1)
59 0
力扣 C++|一题多解之动态规划专题(1)
|
5月前
|
C++ Python 索引
Python Numpy入门基础(二)数组操作
Python Numpy入门基础(二)数组操作
51 0
Python Numpy入门基础(二)数组操作
|
5月前
|
C++ 存储
力扣C++|一题多解之数学题专场(1)
力扣C++|一题多解之数学题专场(1)
45 0
力扣C++|一题多解之数学题专场(1)
|
5月前
|
Java Go C++
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
54 0
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
|
5月前
|
Java Go C++
Golang每日一练(leetDay0114) 矩阵中的最长递增路径、按要求补齐数组
Golang每日一练(leetDay0114) 矩阵中的最长递增路径、按要求补齐数组
59 0
Golang每日一练(leetDay0114) 矩阵中的最长递增路径、按要求补齐数组
|
5月前
|
Java Go C++
Golang每日一练(leetDay0110) 零钱兑换I\II Coin Change
Golang每日一练(leetDay0110) 零钱兑换I\II Coin Change
80 0
Golang每日一练(leetDay0110) 零钱兑换I\II Coin Change
|
5月前
|
Java Go Rust
Rust每日一练(Leetday0030) 合并有序数组、格雷编码、子集II
Rust每日一练(Leetday0030) 合并有序数组、格雷编码、子集II
73 0
Rust每日一练(Leetday0030) 合并有序数组、格雷编码、子集II
下一篇
无影云桌面