C++LeetCode(163.부재 구간)구현

[LeetCode]163.Missing Ranges 부재 구간
Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, upper], return its missing ranges.
Example:
Input: nums = [0, 1, 3, 50, 75], lower = 0 and upper = 99,
Output: ["2", "4->49", "51->74", "76->99"]
이 문 제 는 우리 로 하여 금 이전의 그 문제 와 부족 한 구간 을 구하 게 한다.  Summary Ranges  비슷 하 게 공간의 범위[lower upper]를 주 었 고 부족 한 구간 의 범 위 는 주어진 구간 범위 내 에 있어 야 합 니 다.nums 배열 을 옮 겨 다 니 며 현재 숫자 num 이 lower 보다 크다 면 이 때 는 이미 부족 한 구간 이 있 고 적어도 하나의 lower 숫자 가 부족 하 다 는 것 을 의미한다.이때 num-1 이 lower 보다 크 면 부족 한 구간[lower,num-1]임 을 설명 한다.그렇지 않 으 면 하나의 숫자 만 추가 하면 된다.OJ 이후 많은 tricky test cases 를 가 입 했 기 때문에 포럼 의 많은 해법 이 실패 했다.사실은 많은 것 이 정형 넘 침 에 무릎 을 꿇 었 다.배열 에 정형 최대 치가 있 을 때 이때 lower 가 num+1 로 업 데 이 트 될 때 넘 침 이 있 기 때문에 업데이트 하기 전에 먼저 판단 해 야 한다.만약 에 num 이 정형 최대 치 라면 결과 res 로 돌아 가면 된다.그렇지 않 으 면 lower 를 업데이트 하고 계속 순환 합 니 다.for 순환 종료 후,이때 부족 한 구간 이 존재 할 수 있 습 니 다.바로 이때 lower 가 upper 보다 작 을 때 lower 라 는 숫자 가 부족 하거나[lower,upper]구간 이 부족 할 수 있 습 니 다.마지막 으로 이 구간 을 보충 하면 통과 할 수 있 습 니 다.코드 는 다음 과 같 습 니 다.

class Solution {
public:
    vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) {
        vector<string> res;
        for (int num : nums) {
            if (num > lower) res.push_back(to_string(lower) + (num - 1 > lower ? ("->" + to_string(num - 1)) : ""));
            if (num == upper) return res;
            lower = num + 1;
        }
        if (lower <= upper) res.push_back(to_string(lower) + (upper > lower ? ("->" + to_string(upper)) : ""));
        return res;
    }
};
Github 동기 화 주소:
https://github.com/grandyang/leetcode/issues/163
유사 한 제목:
Summary Ranges
참고 자료:
https://leetcode.com/problems/missing-ranges/
https://leetcode.com/problems/missing-ranges/discuss/50468/Accepted-Java-solution-8-lines-and-0ms
C++구현 LeetCode(163.부재 구간)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 C++구현 부재 구간 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기