輸出有序數組的連續序列範圍

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);
		}
		
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章