leetcode summary-ranges
2015-07-01 21:26
429 查看
题目链接这里
别人的牛逼算法。可以避免检测边界
public class Solution { public List<String> summaryRanges(int[] nums) { List<String> result=new LinkedList<String>(); if(nums==null) { return result; } StringBuilder sb=new StringBuilder(); boolean continueFlag=false; int continueCount=0; for(int i=0;i<nums.length;i++) { if(continueFlag) { if(nums[i]-1!=nums[i-1]) { if(continueCount==1) { result.add(sb.toString()); } else { sb.append("->"+nums[i-1]); result.add(sb.toString()); } continueFlag=false; i--; continueCount=0; sb=new StringBuilder(); } else { continueCount++; } } else { continueFlag=true; sb.append(nums[i]); continueCount++; } } if(continueCount!=0) { if(continueCount==1) { result.add(sb.toString()); } else { sb.append("->"+nums[nums.length-1]); result.add(sb.toString()); } } return result; } }
别人的牛逼算法。可以避免检测边界
public List<String> summaryRanges(int[] nums) { List<String> res = new ArrayList<String>(); if(nums == null || nums.length == 0) return res; int start = 0; int end = 0; while(end < nums.length){ StringBuilder sb = new StringBuilder(); while(end < nums.length - 1 && nums[end] == nums[end + 1] - 1){ end ++; } if(start == end){ sb.append(nums[start]); res.add(sb.toString()); }else{ sb.append(nums[start]); sb.append("->"); sb.append(nums[end]); res.add(sb.toString()); } end++; start = end; } return res; }
相关文章推荐
- 堆栈帧及其布局
- C语言函数指针调用函数
- 黑马程序员——java基础---关键字、常量、变量、运算符
- APIO 2015
- java学习日记
- linux程序设计——进程和信号(第十一章)
- 【无中生有】---14---用户行为监控系统嵌入
- 对于阶梯博弈的理解。
- 反射机制--调用构造函数和成员方法、制作帮助文档
- BZOJ 2820 YY的GCD 【莫比乌斯反演】
- Hadoop之HMaster会自动停掉,怎么回事?
- Unity3D中使用委托和事件
- C#中实现 子窗体控制调用父窗体成员和控件
- 推荐的PHP编码规范
- 从今天开始正式向软件开发进军
- 神经网络 Stanford UFLDL
- JSON 之FastJson解析
- Linux 安装(笔记)
- unity, GetComponent<Renderer>().bounds.size vs GetComponent<MeshFilter>().sharedMesh.bounds.size
- JSON 之GSON 解析