Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 알고리즘기본개념
- 알고리즘
- 완전탐색
- DFS
- SSAFY
- 코딩테스트실력진단
- 코테
- Java
- JPA
- BFS
- 그리디
- SWEA
- Union Find
- 코딩테스트
- 트러블슈팅
- 그래프
- JUnit
- 코드트리
- Spring
- 유니온파인드
- 싸피
- DP
- 완탐
- 백준
- 자바
- 다시보기
- database
- 부분수열의합2
- 기본유형
- 다익스트라
Archives
- Today
- Total
HwangHub
[Java/투포인터] 리트코드 2962. Count Subarrays Where Max Element Appears at Least K Times 본문
workspace/알고리즘
[Java/투포인터] 리트코드 2962. Count Subarrays Where Max Element Appears at Least K Times
HwangJerry 2024. 3. 30. 17:19🤔 Intuition
특정 element의 개수를 세가면서 부분수열의 개수를 구하는 문제이므로 투포인터 문제임을 알 수 있다.
🔎 Algorithm & Complexity
* @algorithm two pointer
* @time O(N) : 10ms
* @memory O(N) : 61.12 MB
👨🏻💻 Logic
중요 포인트는, right를 증가시키다가, max element가 k번 등장하는 경우에 "nums의 총 길이 - right의 index"를 연산하여 "max element가 k번 보다 더 많이 등장하는 경우의 수"를 단 한번의 연산으로 구해내는 작업이었다. 이를 통해 추가적인 포인터 이동 연산 없이 O(N)으로 문제를 해결할 수 있었다.
public class LeetCode_2962 { // Count Subarrays Where Max Element Appears at Least K Times
/**
* @param nums given number arrray
* @param k the number of times at least the max element appears on each subarray
* @return the number of subarrays where the maximum element of nums appears at least k times in that subarray
*/
public long countSubarrays(int[] nums, int k) {
int maxVal = Arrays.stream(nums).max().getAsInt();
int left = 0;
int right = 0;
int count = 0;
long ans = 0;
while (right < nums.length || left > right) {
if (nums[right] == maxVal) {
count++;
}
while (count >= k) {
ans += nums.length - right;
if (nums[left] == maxVal) {
count--;
}
left++;
}
right++;
}
return ans;
}
}
'workspace > 알고리즘' 카테고리의 다른 글
[Java/수학] SWEA. 원점으로 집합 (1) | 2024.04.02 |
---|---|
[Java/투포인터] LeetCode 992. Subarrays with K Different Integers (0) | 2024.03.30 |
[Java/투포인터] 코드트리. 1이 k개 이상 존재하는 부분 수열 (1) | 2024.03.29 |
[Java/스택] 백준 5397. 키로거 (0) | 2024.03.28 |
[Java/투포인터, 누적합] 코드트리. 바구니 안의 사탕 (0) | 2024.03.28 |
Comments