leetcode: Summary Ranges

来源:互联网 发布:太原师范学院教务网络 编辑:程序博客网 时间:2024/06/03 23:01

找出数组中的所有区间。由于输入的数组是有序的且无重复元素,那么我们遍历一遍数组即可,时间代价是O(n)的。

用两个数字记录当前区间的起止,通过判断nums[i]和nums[i-1]的关系来判断是否区间连续。

另外用一个bool型first来判断还否需要赋初值


public class Solution {    public List<String> summaryRanges(int[] nums) {        List<String> rt= new ArrayList<String>();        int st=Integer.MIN_VALUE,ed=Integer.MIN_VALUE;        int length = nums.length;        boolean first = true;        for( int i=0;i<length;i++ )        {            if(first == true)            {                st = nums[i];                ed = nums[i];                first = false;                continue;            }            else if( i<length && nums[i]==nums[i-1]+1 )            {                ed = nums[i];                continue;            }            String temp = "";            if(ed == st )            {                temp = temp + ed;            }            else            {                temp = st+"->"+ed;            }            rt.add(temp);            st = nums[i];            ed = nums[i];        }        if(st != Integer.MIN_VALUE )        {            String temp = "";            if(ed == st )            {                temp = temp + ed;            }            else            {                temp = st+"->"+ed;            }            rt.add(temp);        }        return rt;            }}


0 0
原创粉丝点击