def longestNiceSubarray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
ans = 0
tmp = 0
l = 0
for r,num in enumerate(nums):
while tmp&num > 0: #与不等于0说明窗口不满足条件,缩小窗口直到条件成立
tmp ^= nums[l] #去除一个元素的方法就是异或它自身
l += 1
tmp ^= num #与运算等于0,说明没有相同位置的1。此时异或可以保留两个元素里的所有1
ans = max(ans,r-l+1)
return ans
leetcode2401. 最长优雅子数组
最新推荐文章于 2024-10-01 04:50:10 发布