162. Find Peak Element
class Solution {
public int findPeakElement(int[] nums) {
if (nums.length == 0) return 0;
int prev = nums[0];
int loc = 0;
boolean isIncrease = false;
for (int i = 1; i < nums.length; i++) {
if (nums[i] < prev && isIncrease) {
return i - 1;
} else if (nums[i] > prev) {
isIncrease = true;
loc = i;
} else if (nums[i] < prev) {
isIncrease = false;
}
prev = nums[i];
}
if (isIncrease) return loc;
else return 0;
}
}
Runtime: 0 ms, faster than 100.00% of Java online submissions for Find Peak Element.
Memory Usage: 39.8 MB, less than 5.40% of Java online submissions for Find Peak Element.
예에
혼자 힘으로 풀었는데 너무 쉽게 푼듯 (linear search)
public class Solution {
public int findPeakElement(int[] nums) {
return search(nums, 0, nums.length - 1);
}
public int search(int[] nums, int l, int r) {
if (l == r)
return l;
int mid = (l + r) / 2;
if (nums[mid] > nums[mid + 1])
return search(nums, l, mid);
return search(nums, mid + 1, r);
}
}
우리의 friend 재귀 이용방식
public class Solution {
public int findPeakElement(int[] nums) {
int l = 0, r = nums.length - 1;
while (l < r) {
int mid = (l + r) / 2;
if (nums[mid] > nums[mid + 1])
r = mid;
else
l = mid + 1;
}
return l;
}
}
재귀를 binary search로 둔갑한 방식
Author And Source
이 문제에 관하여(162. Find Peak Element), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jwade/162.-Find-Peak-Element저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)