코린이의 소소한 공부노트

[LeetCode/Easy] 1848. Minimum Distance to the Target Element 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 1848. Minimum Distance to the Target Element

무지맘 2023. 1. 7. 00:45

1. Input

1) 정수 배열 nums

2) 정수 target

3) 정수 start

 

2. Output

1) i-start의 절댓값 중 가장 작은 값을 반환

- nums[i] == target

 

3. Constraint

1) 1 <= nums.length <= 1000

2) 1 <= nums[i] <= 10^4

3) 0 <= start < nums.length

4) nums에는 target이 적어도 1개 있다.

 

4. Example

Input: nums = [1,2,3,4,5], target = 5, start = 3 -> Output: 1

설명: nums의 요소 중 target과 같은건 nums[4]뿐이므로 4-3의 절댓값인 1을 반환한다.

 

5. Code

1) 첫 코드(2022/08/02)

int ld=-1, rd=-1;

for(int i=start ; i<nums.length ; i++)
    if(nums[i]==target){
        rd = i-start;
        break;
    }

for(int i=start-1 ; i>=0 ; i--)
    if(nums[i]==target){
        ld = start-i;
        break;
    }

if(ld==-1) return rd;
else if(rd==-1) return ld;
else return ld>rd ? rd : ld;

2) 다시 풀어본 코드(2023/01/07)

int minAbs = 0;
for(int i=0 ; i<nums.length ; i++){
    if(nums[i]==target){
        minAbs = Math.abs(i-start);
        nums[0] = i;
        break;
    }
}

for(int i=nums[0]+1 ; i<nums.length ; i++){
    if(nums[i]==target){
        minAbs = Math.abs(i-start)<minAbs ? Math.abs(i-start) : minAbs;
    }
}
return minAbs;

  - 1번보다 약간 더 좋아지긴 했다.