- [Leetcode 3702. Longest Subsequence With Non-Zero Bitwise XOR](#Leetcode 3702. Longest Subsequence With Non-Zero Bitwise XOR)
- [1. 解题思路](#1. 解题思路)
- [2. 代码实现](#2. 代码实现)
1. 解题思路
这一题我们只需要从左往右依次计算每一个位置上的累积异或值即可。
其结果只有两种情况:
- 如果其本身非零,那么其可以达到的最大长度就是其当前位置的坐标;
- 如果其值为0,那么其可以找到的最大长度就是从第一个非零的坐标到当前位置的子串长度。
2. 代码实现
给出python代码实现如下:
python
class Solution:
def longestSubsequence(self, nums: List[int]) -> int:
xor = 0
ans = 0
st = -1
for i, num in enumerate(nums):
xor = xor ^ num
if xor != 0:
if st == -1:
st = i
ans = max(ans, i+1)
elif st != -1:
ans = max(ans, i-st)
return ans
提交代码评测得到:耗时157ms,占用内存33.33MB。