/**
 * 2401. Longest Nice Subarray
 * https://leetcode.com/problems/longest-nice-subarray/
 * Difficulty: Medium
 *
 * You are given an array nums consisting of positive integers.
 *
 * We call a subarray of nums nice if the bitwise AND of every pair of elements that are in
 * different positions in the subarray is equal to 0.
 *
 * Return the length of the longest nice subarray.
 *
 * A subarray is a contiguous part of an array.
 *
 * Note that subarrays of length 1 are always considered nice.
 */

/**
 * @param {number[]} nums
 * @return {number}
 */
var longestNiceSubarray = function(nums) {
  let result = 1;
  let left = 0;
  let usedBits = 0;

  for (let right = 0; right < nums.length; right++) {
    while ((usedBits & nums[right]) !== 0) {
      usedBits ^= nums[left];
      left++;
    }
    usedBits |= nums[right];
    result = Math.max(result, right - left + 1);
  }

  return result;
};