給你乙個二進位制陣列 nums ,你需要從中刪掉乙個元素。請你在刪掉元素的結果陣列中,返回最長的且只包含 1 的非空子陣列的長度。
如果不存在這樣的子陣列,請返回 0 。
1.滑動視窗
2.轉化成字串,然後以0為分割,還有這招。。沒想到qaq...
3.dp,
dp1[i]表示第i個元素左邊以第i-1個元素結尾的連續1的個數
dp2[i]表示第i個元素右邊以第i+1個元素開頭的連續1的個數
max(dp1[i]+dp2[i])就是答案
class solution:
def longestsubarray(self, nums: list[int]) -> int:
if sum(nums)==len(nums):return len(nums)-1
res=0
left=right=0
count=0
while right=len(nums):break
while count>1:
if nums[left]==0:count-=1
left+=1
res=max(res,right-left+1-count)
right+=1
return res
class solution:
def longestsubarray(self, nums: list[int]) -> int:
left=0
res=0
count=0
for right in range(len(nums)):
if nums[right]==0:count+=1
while left1:
if nums[left]==0:count-=1
left+=1
res=max(res,right-left)
return res
class solution:
def longestsubarray(self, nums: list[int]) -> int:
if 0 not in nums:return len(nums)-1
s=''.join(map(str,nums)).split('0')
res=0
for i in range(len(s)-1):
res=max(res,len(s[i])+len(s[i+1]))
return res
class solution:
def longestsubarray(self, nums: list[int]) -> int:
n=len(nums)
dp1=[0]*n
for i in range(1,n):
if nums[i-1]:dp1[i]=dp1[i-1]+1
dp2=[0]*n
for i in range(n-2,-1,-1):
if nums[i+1]:dp2[i]=dp2[i+1]+1
return max(dp1[i]+dp2[i] for i in range(n))
1493 刪掉乙個元素以後全為 1 的最長子陣列
題目描述 給你乙個二進位制陣列 nums 你需要從中刪掉乙個元素。請你在刪掉元素的結果陣列中,返回最長的且只包含 1 的非空子陣列的長度。如果不存在這樣的子陣列,請返回 0 提示 1 輸入 nums 1,1,0,1 輸出 3 解釋 刪掉位置 2 的數後,1,1,1 包含 3 個 1 示例 2 輸入 ...
刪掉乙個元素以後全為 1 的最長子陣列
刪掉乙個元素以後全為 1 的最長子陣列 給你乙個二進位制陣列 nums 你需要從中刪掉乙個元素。請你在刪掉元素的結果陣列中,返回最長的且只包含 1 的非空子陣列的長度。如果不存在這樣的子陣列,請返回 0 提示 1 輸入 nums 1,1,0,1 輸出 3 解釋 刪掉位置 2 的數後,1,1,1 包含...
1 n個元素中查詢缺失的乙個數
昨天拼多多面試中遇到了這個問題 乙個1 n的自然數的亂序陣列,其中缺失了1到n之間的某個數,如何快速找出這個數?題意 已知乙個有序數列1 n 元素值 中缺少了乙個元素,找出這個元素。1 異或可解 時間複雜度o n 異或有個很巧妙的地方 同一變數和該變數與另一變數的異或值的異或等於這個變數自身。所以我...