• leetcode-【中等题】228. Summary Ranges


    题目:

    228. Summary Ranges

    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"].

    答案:

    就是找连续的序列。

    直接判断相邻数据大小是否相差为1即可,主要是注意最后的数字要特殊考虑一下。

    链接:

    https://leetcode.com/problems/summary-ranges/

    代码:

     1 #include <vector>
     2 #include <string>
     3 #include <sstream>
     4 
     5 using std::vector;
     6 using std::string;
     7 using std::ostringstream;
     8 
     9 class Solution {
    10 private:
    11     string num2str(int& num)
    12     {
    13         ostringstream stream;
    14         stream << num;
    15         return stream.str();
    16     }
    17     
    18 public:
    19     vector<string> summaryRanges(vector<int>& nums) {
    20         unsigned int len = nums.size();
    21         unsigned int index,inIndex;
    22         unsigned int minIndex = 0;
    23         unsigned int maxIndex = 0;
    24         
    25         vector<string> ans;
    26         if(len == 0)
    27         {
    28             return ans;
    29         }
    30         
    31         if(len == 1)
    32         {
    33             ans.push_back(num2str(nums[0]));
    34             return ans;
    35         }
    36         
    37         for(index = 0; index < len - 1; ++ index)
    38         {
    39             if(nums[index] + 1 == nums[index + 1])
    40             {
    41                 maxIndex = index + 1;
    42             }else
    43             {
    44                 string tmp = "";
    45                 tmp += num2str(nums[minIndex]);
    46                 if(maxIndex > minIndex)
    47                 {
    48                     tmp += "->";
    49                     tmp += num2str(nums[maxIndex]);
    50                 }
    51                 ans.push_back(tmp);
    52                 
    53                 minIndex = index + 1;
    54                 maxIndex = index + 1;
    55             }
    56         }
    57         
    58         if(nums[len-2] + 1 == nums[len - 1])
    59         {
    60             maxIndex = len - 1;
    61         }else
    62         {
    63             minIndex = len - 1;
    64             maxIndex = len - 1;
    65         }
    66         
    67         string tmp = "";
    68         tmp += num2str(nums[minIndex]);
    69         if(maxIndex > minIndex)
    70         {
    71             tmp += "->";
    72             tmp += num2str(nums[maxIndex]);
    73         }
    74         ans.push_back(tmp);
    75                 
    76         return ans;
    77     }
    78 };
    View Code
  • 相关阅读:
    Android——Room数据库版本管理(保留现有数据不丢失)
    javaweb分页查询实现
    《人月神话》读后感(一)
    Android Studio代理-build过慢以及gradle下载失败解决方案
    Room----Android数据库(SQLite)
    Android Jetpack -- Lifecycles篇
    Android学习进度四
    Android Jetpack -- Navigation 篇
    Android Jetpack -- ViewModel篇(二)
    Android Jetpack -- ViewModel篇(一)
  • 原文地址:https://www.cnblogs.com/Shirlies/p/5676560.html
Copyright © 2020-2023  润新知