给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
- # 给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
- from typing import List
-
- class Solution:
- def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
- idx_1 = []
- count_0 = [0] * len(nums)
- for i in range(len(nums)):
- if nums[i] == 1:
- idx_1.append(i)
- count_0[i] = i - len(idx_1) + 1
-
- left = 0
- right = 0
- max_len_1 = 0
- while right < len(idx_1):
- flaw_0 = count_0[idx_1[right]] - count_0[idx_1[left]]
- if flaw_0 == 0:
- max_len_1 = max(max_len_1, right-left+1)
- right += 1
- else:
- left += 1
-
- print(max_len_1)
给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。
- from typing import List
- # 贪吃蛇-右边无脑滑动、坐边看情况收缩
- class Solution:
- def longestOnes(self, nums: List[int], k: int) -> int:
- s = len(nums)
- left = 0
- count = 0
- max_len = 0
- for right in range(s):
- if nums[right] == 0:
- count += 1
- while count > k:
- # 结算
- max_len = max(max_len, right - left)
- if nums[left] == 0:
- count -= 1
- left += 1
- max_len = max(max_len, right - left + 1)
-
- print(max_len)
某系统中有一空间连续的内存,被划分成多个大小相同的内存块。内存的使用状态记录在字符串memory中,每个内存块状态用x或者.表示, # 其中x表示内存被使用,.表示内存空闲 现在最多可以释放其中cnt个内存块(即将字符串中的x变成.),以获得一块空间连续的且最长的空闲内存,请计算并返回该最长空闲内存的内存块数量
- class Solution:
- def max_free_memory(self, memory, cnt):
- s = len(memory)
- left = 0
- count = 0
- max_len = 0
- for right in range(s):
- if memory[right] == "x":
- count += 1
- while count > cnt:
- # 结算
- max_len = max(max_len, right - left)
- if memory[left] == "x":
- count -= 1
- left += 1
- max_len = max(max_len, right - left + 1)
-
- print(max_len)