LeetCode Problem

How to Solve Longest Nice Subarray

To solve this problem, use a sliding window approach that adjusts based on the running bitwise AND. Check each subarray to ensure all pairs have an AND of zero. Efficiently find the maximum length using a linear scan with constant space.

GhostInterview Help

Need help with Longest Nice Subarray without spending extra time grinding it?

GhostInterview can read Longest Nice Subarray from a screenshot, generate the answer path, explain the complexity, and support solver-first interview workflows when you need direct help fast.

Screenshot Input

Capture the prompt fast instead of rewriting the problem by hand.

Answer + Complexity

Get the solution path, trade-offs, and complexity summary in one pass.

Stealth Workflow

Stay outside captured layers on supported screen-share workflows.

Problem #2401Sliding window with running state updatesReviewed 2026-03-08
Difficulty
Medium
Primary pattern
Sliding window with running state updates
Answer-first problem summary
Step-by-step approach and complexity
GhostInterview solver workflow

To solve this problem, use a sliding window approach that adjusts based on the running bitwise AND. Check each subarray to ensure all pairs have an AND of zero. Efficiently find the maximum length using a linear scan with constant space.

Problem Statement

You are given an array of positive integers. A subarray is considered nice if the bitwise AND of every pair of distinct elements in the subarray is zero.

Return the length of the longest nice subarray that can be formed from the given array.

Examples

Example 1

Input: nums = [1,3,8,48,10]

Output: 3

The longest nice subarray is [3,8,48]. This subarray satisfies the conditions:

  • 3 AND 8 = 0.
  • 3 AND 48 = 0.
  • 8 AND 48 = 0. It can be proven that no longer nice subarray can be obtained, so we return 3.

Example 2

Input: nums = [3,1,5,11,13]

Output: 1

The length of the longest nice subarray is 1. Any subarray of length 1 can be chosen.

Constraints

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 109

Solution Approach

Sliding Window Approach

We use a sliding window to maintain a dynamic subarray and its corresponding bitwise AND. As we expand the window, we keep updating the AND until it no longer satisfies the condition. When the condition fails, shrink the window from the left side to re-establish validity.

Bitwise AND for Validity

For each element in the subarray, check if the bitwise AND with other elements results in zero. This ensures that no two elements in the subarray conflict. The sliding window ensures that only valid subarrays are considered for the maximum length.

Efficiency with Running State

Instead of recalculating the bitwise AND for the entire window repeatedly, maintain a running AND as you move the window across the array. This reduces time complexity and ensures that we only check the subarray’s validity incrementally.

Complexity Analysis

MetricValue
TimeO(n)
SpaceO(1)

The solution runs in linear time O(n) because we only scan through the array once with the sliding window. We update the bitwise AND incrementally and perform constant-time operations on each element, ensuring space complexity remains O(1).

What Interviewers Usually Probe

  • Look for an understanding of sliding window with running state updates.
  • Expect explanations of bitwise operations and their role in ensuring the subarray's validity.
  • Test for clarity on maintaining the subarray's length while adjusting the window.

Common Pitfalls or Variants

Common pitfalls

  • Incorrect handling of subarrays with overlapping elements.
  • Misunderstanding the role of bitwise AND and not updating the state correctly.
  • Failing to shrink the window properly when a subarray becomes invalid.

Follow-up variants

  • Test with arrays where all elements are powers of 2.
  • Handle the case where no valid subarray can be formed.
  • Test with the minimum input size to check edge cases.

How GhostInterview Helps

  • GhostInterview emphasizes the sliding window technique, helping you keep track of the running AND state.
  • It guides you to think about bitwise operations in the context of windowing, preventing invalid subarrays.
  • The platform suggests efficient state management to reduce unnecessary calculations and ensure fast solutions.

Topic Pages

FAQ

What is the sliding window technique used in the Longest Nice Subarray problem?

The sliding window technique is used to maintain a dynamic subarray where elements are checked for validity using bitwise AND operations. As the window slides, invalid subarrays are removed efficiently.

How does bitwise AND help determine the validity of a subarray in this problem?

Bitwise AND ensures that no two elements in the subarray have overlapping bits. If the AND of any two elements is non-zero, the subarray is invalid.

What is the time complexity of the Longest Nice Subarray problem?

The time complexity is O(n), as the solution uses a sliding window to scan through the array once while maintaining a running AND state.

What is the maximum possible length of a nice subarray?

The maximum length depends on the array, but the sliding window approach ensures that we find the longest subarray with valid AND conditions efficiently.

How does GhostInterview help in solving this problem?

GhostInterview focuses on guiding you through efficient sliding window techniques, bitwise operations, and state management, making the solution process smoother and faster.

GhostInterview Solver

Need direct help with Longest Nice Subarray instead of spending more time grinding it?

Download GhostInterview when you want a LeetCode solver, not another long practice loop. Capture Longest Nice Subarray from a screenshot, get the answer path and complexity, and use supported stealth workflows that stay outside captured layers.

Screenshot Input

Capture the prompt fast instead of rewriting the problem by hand.

Answer + Complexity

Get the solution path, trade-offs, and complexity summary in one pass.

Stealth Workflow

Stay outside captured layers on supported screen-share workflows.