inblog logo
|
stupefyee
    알고리즘문제풀기

    [JAVA 문제 풀이] 407. Longest Subarray With Maximum Bitwise AND

    [최대 비트 단위 AND를 가진 가장 긴 서브어레이]
    Stupefyee's avatar
    Stupefyee
    Jul 30, 2025
    [JAVA 문제 풀이] 407. Longest Subarray With Maximum Bitwise AND
    Contents
    내가 작성한 코드
    Longest Subarray With Maximum Bitwise AND - LeetCode
    Can you solve this real interview question? Longest Subarray With Maximum Bitwise AND - You are given an integer array nums of size n. Consider a non-empty subarray from nums that has the maximum possible bitwise AND. * In other words, let k be the maximum value of the bitwise AND of any subarray of nums. Then, only subarrays with a bitwise AND equal to k should be considered. Return the length of the longest such subarray. The bitwise AND of an array is the bitwise AND of all the numbers in it. A subarray is a contiguous sequence of elements within an array.   Example 1: Input: nums = [1,2,3,3,2,2] Output: 2 Explanation: The maximum possible bitwise AND of a subarray is 3. The longest subarray with that value is [3,3], so we return 2. Example 2: Input: nums = [1,2,3,4] Output: 1 Explanation: The maximum possible bitwise AND of a subarray is 4. The longest subarray with that value is [4], so we return 1.   Constraints: * 1 <= nums.length <= 105 * 1 <= nums[i] <= 106
    Longest Subarray With Maximum Bitwise AND - LeetCode
    https://leetcode.com/problems/longest-subarray-with-maximum-bitwise-and/description/
    Longest Subarray With Maximum Bitwise AND - LeetCode
    notion image
    notion image
    크기 'n'의 정수 배열 'nums'가 주어집니다. 'nums'에서 비트 단위 AND가 최대인 비어 있지 않은 하위 배열을 고려해 보세요. * 즉, 'k'를 비트 단위 AND의 최대값이라고 하자. 그런 다음 비트 단위 AND를 가진 하위 배열만 'k'와 같은 값을 고려해야 합니다. 가장 긴 하위 배열의 길이를 반환합니다. 배열의 비트 단위 AND는 배열의 모든 숫자 중 비트 단위 AND입니다. 서브어레이는 배열 내의 요소들의 연속적인 순서입니다. 제약 조건: * 1 <= nums.length <= 105 * 1 <= nums [i] <= 106
     

    내가 작성한 코드

    class Solution { public int longestSubarray(int[] nums) { int max = 0; // 배열에서 가장 큰 숫자 저장 변수 int maxLen = 0; // 최대 길이 저장 변수 int currentLen = 0; // 현재 연속된 max 값의 길이 // 1단계 >> 배열 내 최댓값 찾기 (bitwise AND 최대값 후보) for (int num : nums) { max = Math.max(max, num); } // 2단계 >> 연속된 max 값의 최대 길이 계산 for (int num : nums) { if (num == max) { currentLen++; // 연속된 max 값이면 길이 증가 maxLen = Math.max(maxLen, currentLen); // 최대값 갱신 } else { currentLen = 0; // max가 아니면 초기화 } } return maxLen; } }
    Share article
    Contents
    내가 작성한 코드

    stupefyee

    RSS·Powered by Inblog