【LeetCode OJ 228】Summary Ranges

来源:互联网 发布:阿里云服务器绑定域名 编辑:程序博客网 时间:2024/05/21 18:37

题目链接:https://leetcode.com/problems/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"].

示例代码:

public class Solution{public static void main(String[] args){int nums[]=new int[]{1,2,4,5,7};List<String> rList=new Solution().summaryRanges(nums);for(String str:rList){System.out.println(str);}}public List<String> summaryRanges(int[] nums){        List<String> result=new ArrayList<String>();        int startLine=0; //起始位置        int endLine=0;//结束位置        int num=0;//扫描计数        for(int i=0;i<nums.length;i++)        {        int j=i;        int k=j+1;        if(k<nums.length)        {        //后面的数>当前数+1,且只扫描了一个数,就将该数放入result中        if(nums[k]>(nums[j]+1)&&num==0)        {        result.add(String.valueOf(nums[j]));        startLine=k;        endLine=k;        num=0;        }        //后面的数>当前数+1,扫描了(endLine-start+1)个数,就将nums[startLine])+"->"+String.valueOf(nums[endLine])放入result中        else if(nums[k]>(nums[j]+1)&&num>0)        {        result.add(String.valueOf(nums[startLine])+"->"+String.valueOf(nums[endLine]));        startLine=k;        endLine=k;        num=0;        }        //后面的数=当前数+1,移动endLine,num++即可        else if(nums[k]-nums[j]==1)        {        endLine=k;        num++;        }        }        //扫描最后一个数        else        {        if(num==0)        result.add(String.valueOf(nums[k-1]));        else        {        result.add(String.valueOf(nums[startLine])+"->"+String.valueOf(nums[endLine]));        num=0;        }        }                }        return result;    }}


0 0
原创粉丝点击