Leetcode Java Largest Number At Least Twice of Others
업데이트:
문제
코드
class Solution {
public int dominantIndex(int[] nums) {
int max = -1;
int index = -1;
int second = -1;
for (int idx = 0; idx < nums.length; idx++) {
if (nums[idx] > max) {
second = max;
max = nums[idx];
index = idx;
} else if (nums[idx] > second) {
second = nums[idx];
}
}
return max >= second * 2 ? index : -1;
}
}
결과
설명
- nums 내 가장 큰 값이 다른 값보다 최소 두 배 이상 큰지를 검증하여 해당 값의 위치를 반환하는 문제이다.
- 단, 가장 큰 값이 다른 값보다 최소 두 배 이상 크지 않는다면 -1을 주어진 문제의 결과로 반환한다.
- 문제 풀이에 필요한 변수를 정의한다.
- max는 가장 큰 값을 저장할 변수로, -1로 초기화한다.
- index는 가장 큰 값의 위치 값을 저장할 변수로, -1로 초기화한다.
- second는 두 번째로 큰 값을 저장할 변수로, -1로 초기화한다.
- 0부터 nums의 길이 미만까지 idx를 증가시키며 아래를 반복한다.
- nums의 idx번쨰 값이 max보다 큰 경우, 현재까지 가장 큰 값이므로 아래를 수행한다.
- second에 기존까지 가장 큰 값인 max 값을 넣어준다.
- max에 현재까지 가장 큰 값인 nums의 idx번째 값을 넣어준다.
- index에 현재까지 가장 큰 값의 위치인 idx를 넣어준다.
- nums의 idx번쨰 값보다 second의 값이 큰 경우, 두 번째로 큰 값이므로 second에 해당 값을 넣어준다.
- nums의 idx번쨰 값이 max보다 큰 경우, 현재까지 가장 큰 값이므로 아래를 수행한다.
- 반복이 완료되면 max가 second의 두 배 보다 큰 값인지 검증하여 큰 경우 index를, 아니면 -1을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기