228. Summary Ranges
阿新 • • 發佈:2018-11-07
組合 數組 返回 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; }
方法二、
直接以當前元素為每一個組合的起始,求出每一個組合。
publicList<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