输出有序数组的连续序列范围

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

For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"].


说明:0,1,2是连续的序列,则输出0->2

4,5又是另外一组连续的,则输出4->5

7单独是一个序列,输出7


注意数组没有元素(不一定为空)。仅仅有1一个元素,等等的特殊情况的处理。

public static void summaryRanges(){//leetcode oj
		int []nums = {1,2,3,4,6,8};
		List<String> a = new ArrayList<String>();
		int start=0;
		int end = 0;
		int temp=0;
		int i=0;

		while(i<nums.length){
			temp=nums[i];
			if(i+1 != nums.length && temp+1 != nums[i+1]){//特殊情况处理。超出数组长度
				if(start == end){
					a.add(""+nums[start]);
				}else{
					a.add(nums[start]+"->"+nums[end]);
				}
				start=i+1;
				end= start;
				temp = nums[start];
				++i;
				if(start == nums.length -1){//最后一个元素是起始元素直接加入
					a.add(""+nums[start]);
					break;
				}
			}else{
				if(i+1 == nums.length ){//后面没有元素了,
					if(start == end){
						a.add(""+nums[start]);
					}else{
						a.add(nums[start]+"->"+nums[end]);
					}
					break;
				}
				++i;
				temp = nums[i];
				end = i;
			}
		}//while
		//return a;
		for(String d:a){
			System.out.println(d);
		}
		
	}


posted on 2017-07-03 15:30  blfbuaa  阅读(195)  评论(0编辑  收藏  举报