https://leetcode.com/problems/longest-nice-subarray
2401. Longest Nice Subarray
給你一個陣列nums,如果他的子陣列的任意兩個元素and後為0則他是一個nice陣列,求出
最長的nice陣列有多長(長度為1的陣列總是nice)。
思路:
雙指針,如果當前加入的元素跟之前加入的bit位置都沒重複就可以加入長度加一,否則
一直pop前面的數字(用xor刪掉前面加過的元素),返回最長長度即可。
Java Code:
--------------------------------------------------------
class Solution {
public int longestNiceSubarray(int[] nums) {
int res = 1;
int curr = 0;
int l = 0;
int r = 0;
while (r < nums.length) {
while ((curr & nums[r]) > 0) {
curr ^= nums[l++];
}
curr |= nums[r];
res = Math.max(res, r - l + 1);
r++;
}
return res;
}
}
--------------------------------------------------------
--
https://i.imgur.com/9FXhO25.jpeg
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.158.101.161 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1742312683.A.850.html