C++LeetCode 구현(228.총괄 구간)

[LeetCode]228.요약 범위 요약 구간
Given a sorted integer array without duplicates, return the summary of its ranges.
Example 1:
Input:  [0,1,2,4,5,7]
Output: ["0->2","4->5","7"]
Explanation: 0,1,2 form a continuous range; 4,5 form a continuous range.
Example 2:
Input:  [0,2,3,4,6,8,9]
Output: ["0","2->4","6","8->9"]
Explanation: 2,3,4 form a continuous range; 8,9 form a continuous range.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
이 문 제 는 우리 에 게 질서정연 한 배열 을 정 해 주 었 다.우 리 는 구간 을 정리 하 자.구체 적 으로 말 하면 우 리 는 연속 적 인 서열 을 찾 은 다음 에 첫 번 째 두 숫자 사이 에'->'로 연결 하 는 것 이다.그러면 나 는 배열 을 한 번 훑 어보 면 된다.매번 다음 숫자 가 증가 하 는 지 확인 할 때마다 다음 숫자 가 증가 하 는 지,만약 그렇다면 계속 아래로 훑 어보 고 그렇지 않다 면,우 리 는 이때 하나의 숫자 인지 하나의 서열 인지,하나의 숫자 는 결 과 를 직접 저장 하고,서열 은 수미 숫자 와 화살 표를 저장 해 야 한다"->"고 판단 해 야 한다.우 리 는 두 개의 변수 i 와 j 가 필요 하 다.그 중에서 i 는 연속 서열 의 시작 숫자 위치 이 고 j 는 연속 수열 의 길이 이다.j 가 1 일 때 하나의 숫자 만 있다 는 것 을 설명 한다.1 보다 크 면 하나의 연속 서열 이 고 코드 는 다음 과 같다.

class Solution {
public:
    vector<string> summaryRanges(vector<int>& nums) {
        vector<string> res;
        int i = 0, n = nums.size();
        while (i < n) {
            int j = 1;
            while (i + j < n && (long)nums[i + j] - nums[i] == j) ++j;
            res.push_back(j <= 1 ? to_string(nums[i]) : to_string(nums[i]) + "->" + to_string(nums[i + j - 1]));
            i += j;
        }
        return res;
    }
};
유사 한 제목:
Missing Ranges
Data Stream as Disjoint Intervals  
참고 자료:
https://leetcode.com/problems/summary-ranges/
https://leetcode.com/problems/summary-ranges/discuss/63451/9-lines-c%2B%2B-0ms-solution
https://leetcode.com/problems/summary-ranges/discuss/63219/Accepted-JAVA-solution-easy-to-understand
C++구현 LeetCode(228.총 결 구간)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 C++구현 총 결 구간 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기