전체 글 151

[leetcode] 162. Find Peak Element

일단 Peak이란 극댓값으로 양옆보다 큰 값을 의미한다.배열에서 극댓값을 찾는 방법은 두 가지가 있는데 첫번째는 순차 탐색이다.순차 탐색의 경우 처음부터 끝까지 양옆을 비교해가며 극댓값을 찾는 것이다. 시간복잡도는 O(n)이다. 또 다른 방법은 이진 탐색을 사용하는 것이다.극댓값을 찾는다는 것은 결국 배열에서 가장 큰 값을 찾는 것이다. 아래 코드처럼 배열의 left, right 인덱스를 두고 이 인덱스들을 바탕으로 중간값을 찾아 중간값과 중간 옆 값을 비교합니다.비교 결과를 바탕으로 인덱스를 옮겨가며 가장 큰 값의 인덱스를 찾습니다.class Solution { public int findPeakElement(int[] nums) { int left = 0, right = nums.l..

코딩테스트 2024.06.28

[leetcode] 1493. Longest Subarray of 1's After Deleting One Element

문제 1004 문제와 동일한 방식으로 풀었고 Sliding Window를 이용해서 풀되 하나의 요소를 삭제하면 더 긴 subarray를 만들 수 있기 때문에 조건을 잘 체크해야한다. 개인적으로는 1493번을 먼저 풀고 1004번을 푸는 것이 좋을 것 같다.class Solution { public int longestSubarray(int[] nums) { int num = 0; int start = 0; int index = 0; int max = 0; while(index max) { max = index - start; } } if (max == 0) { ..

코딩테스트 2024.06.25