[LeetCode] Find All K-Distant Indices in an Array (JAVA)

2025. 6. 24. 18:27·알고리즘/LeetCode

https://leetcode.com/problems/find-all-k-distant-indices-in-an-array/?envType=daily-question&envId=2025-06-24

 

해당 문제는 단순히 이중for문을 통해서 각 배열의 요소가 k거리이내에 key값이 존재하는지 검사하는 방식만으로도 충분히 해결이 가능한 문제입니다.

 

하지만 위 방식으로는 다소 비효율적인 부분이 발생하게 됩니다.

위와 같은 경우에 주어진 범위내에 key값이 존재하는지 검사하면서 아래와 같이 동일한 구간을 중복으로 검사하게되는 상황이 발생하게됩니다.

 

 

또한 key값을 기준으로 k범위 내의 자리를 추가하는 방식또한 아래와 같은 중복이 발생하게됩니다. 

 

때문에 위와같은 중복현상을 해결하기위해서 Two Pointer 개념을 도입하여 중복을 해결하기로했습니다.

 

위와 같은 케이스를 예시로보면 

 

첫번째 key값을 만났을때(cur) k범위만큼 start, end값을 지정해주고 각 위치를 추가해줍니다. 

 

이후 다음 key값을 만났을때는 start의 값을 이전의 end값과 현재의 start값을 비교해서 더 큰 값을 start값으로 지정해주면 됩니다.

즉, end값의 상태를 계속 유지하면서 start 값을 정하는 방식으로 중복문제를 해결할수있게됩니다.

 

import java.util.ArrayList;
import java.util.List;

public class Solution {
	public List<Integer> findKDistantIndices(int[] nums, int key, int k) {
		int start = 0, end = 0;
		List<Integer> result = new ArrayList<>();
		for (int i = 0; i < nums.length; i++) {
			if(nums[i] == key){
				start = Math.max(end, i-k);
				end = Math.min(i+k, nums.length)+1;
				for (int j = start; j < end; j++) {
					result.add(j);
				}
			}
		}
		return result;
	}
}

'알고리즘 > LeetCode' 카테고리의 다른 글

1504. Count Submatrices With All Ones (JAVA)  (0) 2025.08.21
3479. Fruits Into Baskets III [JAVA]  (4) 2025.08.06
2127. Maximum Employees to Be Invited to a Meeting (JAVA)  (0) 2025.01.27
802. Find Eventual Safe States (JAVA)  (0) 2025.01.24
2017. Grid Game (JAVA)  (0) 2025.01.21
'알고리즘/LeetCode' 카테고리의 다른 글
  • 1504. Count Submatrices With All Ones (JAVA)
  • 3479. Fruits Into Baskets III [JAVA]
  • 2127. Maximum Employees to Be Invited to a Meeting (JAVA)
  • 802. Find Eventual Safe States (JAVA)
shryoo
shryoo
shryoo 님의 블로그 입니다.
  • shryoo
    shryoo 님의 블로그
    shryoo
  • 전체
    오늘
    어제
    • 분류 전체보기 (79)
      • TIL (21)
      • 알고리즘 (57)
        • LeetCode (32)
        • 프로그래머스 (17)
        • 백준 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
shryoo
[LeetCode] Find All K-Distant Indices in an Array (JAVA)
상단으로

티스토리툴바