1、题目描述:
此题与力扣605种花问题 的变体
问题改成能最多种多少多花?
比如输入是
5
1 0 0 0 0
则输出为:
2
2、题解:
注意:需要自己处理输入输出
n = int(input())
nums = [int(i) for i in input().split()]
def maxnum(n,nums):
if n == 1 and nums[0] == 0:
return 1
res = 0
pre,cur = 0,1
while cur < n :
if pre == 0 and nums[pre] == 0 and nums[cur] == 0:#处理开头
res += 1
nums[pre] = 1
elif cur == n - 1 and nums[cur] == 0 and nums[pre] == 0:#处理结尾
res += 1
elif nums[pre] == 0 and nums[cur] == 0 and nums[cur + 1] == 0:#一般情况
res += 1
nums[cur] = 1
pre += 1
cur += 1
return res
print(maxnum(n,nums))
简化版:
有个技巧,就是在数组的前后加0,这样可以避免处理头和尾。
n = int(input())
nums = [int(i) for i in input().split()]
def maxnum(n,nums):
nums = [0] + nums + [0]
res = 1
for i in range(1,len(nums) - 1):
if nums[i] == 0 and nums[i - 1] == 0 and nums[i + 1]:
nums[i] = 1
res += 1
return res
print(maxnum(n,nums))