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

[최대 비트 단위 AND를 가진 가장 긴 서브어레이]
Stupefyee's avatar
Jul 30, 2025
[JAVA 문제 풀이] 407. Longest Subarray With Maximum Bitwise AND
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

stupefyee