228.Summary Ranges

    xiaoxiao2022-06-28  31

    228 .Summary Ranges

    Difficulty: Medium

    Given a sorted integer array without duplicates, return the summary of its ranges.

    For example, given [0,1,2,4,5,7], return [“0->2”,”4->5”,”7”].

    解题思路

    思路是比较清楚地,就是整出两个指向头尾的数值,并随着循环递增判断是否每次都比原来的end值多1,如果是,就置新的end为end+1,不是则将begin与end都指向nums[i+1]

    为了输出格式对应,做了一个简单的format函数(思路来源于网络),这样就省着判断了,因为过程中需要两次运用到这个函数。format函数十分简单,就是判断begin与end确认构成的string并返回即可。

    具体实现

    class Solution { public: string format(int begin, int end) { char buffer[32]; if (end == begin) { sprintf(buffer, "%d", begin); } else { sprintf(buffer, "%d->%d", begin, end); } return string(buffer); } vector<string> summaryRanges(vector<int>& nums) { vector<string> ans; if(nums.size() < 1) return ans; int begin,end; begin = nums[0]; end = nums[0]; for(int i = 1;i < nums.size();i++) { if(end+1 == nums[i]||end == nums[i]) { end = nums[i]; } else { ans.push_back(format(begin,end)); begin = end = nums[i]; } } ans.push_back(format(begin,end)); return ans; } };

    ps:感觉自己都在做简单题呢。。下个星期开始挑战点难得题目算了。

    转载请注明原文地址: https://ju.6miu.com/read-1124568.html

    最新回复(0)