[LeetCode] Summary Ranges

来源:互联网 发布:mac新建文件夹 编辑:程序博客网 时间:2024/06/03 19:21
public class Solution {public List<String> summaryRanges(int[] nums) {    int i=0;    List<String> result=new ArrayList<String>();    while(i<nums.length){        String s="";        s+=nums[i];        if(i<nums.length-1&&nums[i]+1==nums[i+1]){            s+="->";            while(i<nums.length-1&&nums[i]+1==nums[i+1]){                i++;            }            s+=nums[i];        }        result.add(s);        s=new String();        i++;    }    return result;}}
public List<String> summaryRanges(int[] nums) {LinkedList<String> list = new LinkedList<String>();if(nums.length==1){list.add(nums[0]+"");return list;}for(int i=0;i<nums.length-1;i++){boolean onlyHead = true;String s = nums[i]+"";while((i<nums.length-1)&&Math.abs(nums[i]-nums[i+1])==1){onlyHead=false;i++;}if(!onlyHead){if(i==nums.length-1){if(Math.abs(nums[i]-nums[i-1])==1){s =s + "->"+nums[i];list.add(s);}else{s += "->"+nums[i-1];list.add(s);s = nums[i]+"";list.add(s);}}else if(i==nums.length-2){s += "->"+nums[i];list.add(s);list.add(nums[i+1]+"");}else{s += "->"+nums[i];list.add(s);}}else{if(i==nums.length-2){list.add(s);list.add(nums[i+1]+"");}else{list.add(s);}}}return list;    }


上面是网上找到的解法,下面是我自己的解法,


通过比较发现,我的解法之中使用了过多的条件判断,而且由于在外层的for循环中,判断条件使用了nums,length-1,所以给边界条件制造了非常多的不必要麻烦。


之后做题中可以选择在内层循环中键入更为强制的条件,而在外层循环中使条件合理的宽松,内外要有区别。

0 0
原创粉丝点击