[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,所以给边界条件制造了非常多的不必要麻烦。之后做题中可以选择在内层循环中键入更为强制的条件,而在外层循环中使条件合理的宽松,内外要有区别。
相关文章推荐
- Zookeeper的web管理系统
- 用200行Python代码“换脸”
- 黑马程序员——Java基础---GUI
- intent的startActivityForResult()方法
- 用200行Python代码“换脸”
- No module named cv2
- No module named cv2
- 2015.8.5 循环与函数、位运算
- 黑马程序员——ios学习笔记 C语言 指针的应用
- 在linux系统中怎样用rsyslog来配置一个syslog服务器
- 【移动端debug-1】css3中box-shadow的溢出问题
- Swift 与 Object-C 项目混搭桥接文件的配置小记
- 最小编辑代价(动态规划)
- 黑马程序员——Java基础---IO
- Hibernate之Annotation(注解的方式,非映射)
- Exchange Cards(dfs)
- WPF窗体居中显示
- ado.笔记
- ExtJS WindowGroup示例
- 队列的实现