LeetCode Entry
2419. Longest Subarray With Maximum Bitwise AND
Longest max OR subarray
2419. Longest Subarray With Maximum Bitwise AND medium
blog post
substack
youtube

Join me on Telegram
https://t.me/leetcode_daily_unstoppable/1065
Problem TLDR
Longest max OR subarray #medium #counting
Intuition
// 011
// 010
// 111
// 100
Each new element decreases OR, consider only equal values.
Approach
- longest subarray of
maxes - many one-liners possible
- 09/2024 - 13 minutes, 07/2025 - 10 minutes
Complexity
-
Time complexity: \(O(n)\)
-
Space complexity: \(O(1)\)
Code
// 43ms
fun longestSubarray(n: IntArray, m: Int = n.max()) =
n.runningFold(0) { l, x -> if (x == m) l + 1 else 0 }.max()
// 4ms
fun longestSubarray(n: IntArray): Int {
var m = 0; var r = 0; var l = 0
for (x in n) if (x > m) { m = x; r = 1; l = 1 }
else if (x < m) l = 0 else r = max(r, ++l)
return r
}
// 0ms
pub fn longest_subarray(n: Vec<i32>) -> i32 {
n.into_iter().dedup_with_count()
.max_by_key(|&d| (d.1, d.0)).unwrap().0 as _
}
// 1ms
int longestSubarray(vector<int>& n) {
int r = 0;
for (int l = 0, m = 0; int x: n)
x > m ? m = x, l = 1, r = 1 :
x < m ? l = 0 : r = max(r, ++l);
return r;
}
// 36ms
def longestSubarray(self, n: List[int]) -> int:
m=max(n);return max(sum(1for _ in g) for x, g in groupby(n) if x==m)