【LeetCode】228.Summary Ranges(Medium)解题报告

来源:互联网 发布:java向导被中断 编辑:程序博客网 时间:2024/06/05 02:56

【LeetCode】228.Summary Ranges(Medium)解题报告

题目地址:https://leetcode.com/problems/summary-ranges/description/
题目描述:

  Given a sorted integer array without duplicates, return the summary of its ranges.

Example1:Input: [0,1,2,4,5,7]Output: ["0->2","4->5","7"]Example2:Input: [0,2,3,4,6,8,9]Output: ["0","2->4","6","8->9"]

Solutions:

class Solution {    public List<String> summaryRanges(int[] nums) {        List<String> list = new ArrayList<>();        if(nums.length==0){            return list;        }        int start=0;        for(int i=1 ; i<nums.length ; i++){            if(nums[i]-1!=nums[i-1]){                if(i-1==start){                    list.add(nums[i-1] + "");                }else{                    list.add(nums[start]+"->"+nums[i-1]);                }                start=i;            }        }        //下面部分排除全部是递增的情况,前面遍历一部分之后,若后面都是递增的那么会跳出循环,也就是说无法遍历到,后面进行处理。        if(start==nums.length-1){            list.add(nums[start]+"");        }else{            list.add(nums[start]+"->"+nums[nums.length-1]);        }        return list;    }}

  下面是自己开始写的没a的垃圾代码,错误百出。自己出问题的点主要在start的更新要处理好。

class Solution {    public List<String> summaryRanges(int[] nums) {        List<String> list = new ArrayList<>();        int left=0;        int right=0;        int j=0;        for(int i=0 ; i<nums.length-1 ; i++){            if(nums[i]==nums[i+1]-1){                left=nums[i];                right=nums[i+1];            }else if(left==right){                list.add("nums[i]");            }else{                list.add("left"+"->"+"right");            }        }        return list;    }}

Date:2017年11月23日

原创粉丝点击