Summary Ranges

来源:互联网 发布:linux syslink命令 编辑:程序博客网 时间:2024/06/10 04:01

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

Credits:

好久没做的题,一上来有点小慌,觉得没有印象可能不能一下子写出来。不过还好。看来应该是理解了一部分。

这道题跟missing range不太一样,

这道题的思路是用两个指针,一个指向连续段的前端,一个指向连续段的后端。在一个while循环的开始,用一个while循环不断的更新cur指针的位置,更新的条件有两个1. 不超过数组的范围 2.跟后面的元素是相邻的 (+1的关系)。跳出循环后需要记录下当前的结果。这时记得要更新cur跟pre的下标。

代码:

public List<String> summaryRanges(int[] nums) {        List<String> result = new ArrayList<>();        if(nums == null || nums.length == 0) return result;                int pre = 0;        int cur = 0;                while(cur < nums.length){            if(cur<nums.length-1 && nums[cur+1] == nums[cur]+1){                cur++;            }else{                if(pre == cur){                    result.add(Integer.toString(nums[pre]));                }else{                    String str = nums[pre] + "->" + nums[cur];                    result.add(str);                }                cur++;                pre = cur;            }        }        return result;    }

同样用for循环来写:

[1,3]


0 0
原创粉丝点击