458. 목표 마지막 위치

1245 단어
묘사
승차수 그룹에 target이 마지막으로 나타난 위치를 찾습니다. 만약 -1이 나타나지 않았다면
예제
[1, 2, 2, 4, 5, 5]를 드리겠습니다.target = 2, 반환 2.target = 5, 5 반환target = 6, -1 반환

코드

public class Solution {
    public int lastPosition(int[] nums, int target) {
        if (nums == null || nums.length == 0) {
            return -1;
        }
        int start = 0;
        int end = nums.length - 1;
        while (start < end -1) {
            int mid = start + (end - start) / 2;
            if (nums[mid] == target) {
                start = mid;                
               /*      start,    end,        last position,
                *      target                  target 
                */
            }
            if (nums[mid] > target) {
                end = mid;
            }
            if (nums[mid] < target) {
                start = mid;
            }
        }
        
        if (nums[end] == target) {
            return end;
        }
        if (nums[start] == target) {
            return start;
        }
        return -1;
    }
} 

고전적인 이분법 템플릿으로 범위를 계속 좁히고 마지막으로 start와end 두 수에 범위를 고정시키고 마지막으로 조건 판단 문장을 통해 원하는 값을 확정합니다.구체적인 세부 사항, 예를 들어 주석 부분은 제목에 따라 수정해야 하며, 첫 번째 수를 찾으면 영end=mid를 사용해야 한다

좋은 웹페이지 즐겨찾기