1. 程式人生 > >228. Summary Ranges

228. Summary Ranges

組合 數組 返回 style 指針 arr .com 技術 urn

一、題目

  1、審題

  技術分享圖片

  2、分析

    給出一個有序的無重復的整形數組,返回一個描述數組‘概要’的字符串 List。

二、解答

  1、思路

    方法一、

      采用兩個指針記錄前後的元素是否連續。

  

    public List<String> summaryRanges(int[] nums) {
    
        int len;
        List<String> list = new ArrayList<String>();
        if(nums == null || (len = nums.length) == 0)
            
return list; int cur = 0, pre = 0; for (int i = 1; i < len; i++) { if(nums[i] == nums[i - 1] + 1) { cur = i; } else { if(cur == pre) list.add(nums[pre] + ""); else list.add(nums[pre]
+ "->" + nums[cur]); cur = pre = i; } } // the last one if(cur == pre) list.add(nums[pre] + ""); else list.add(nums[pre] + "->" + nums[cur]); return list; }

  方法二、

    直接以當前元素為每一個組合的起始,求出每一個組合。

  public
List<String> summaryRanges(int[] nums) { int len; List<String> list = new ArrayList<String>(); if(nums == null || (len = nums.length) == 0) return list; for (int i = 0; i < len; i++) { int a = nums[i]; while(i + 1 < len && nums[i + 1] - nums[i] == 1) i++; if(a != nums[i]) list.add(a + "->" + nums[i]); else list.add(a + ""); } return list; }

228. Summary Ranges