您的位置:首页 > 其它

[LeetCode] Summary Ranges

2015-08-06 01:11 387 查看
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,所以给边界条件制造了非常多的不必要麻烦。之后做题中可以选择在内层循环中键入更为强制的条件,而在外层循环中使条件合理的宽松,内外要有区别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: