您的位置:首页 > 编程语言 > Java开发

(java)Summary Ranges

2016-01-08 10:42 309 查看
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"].

思路:循环遍历这个数组,如果a[i+1]<a[i]则将a[i]设置为这个范围的尾,将其入list,然后将a[i+1]设置为新的范围的开始。

代码如下(已通过leetcode)

public class Solution {

public List<String> summaryRanges(int[] nums) {

List<String> list=new ArrayList<String>();

if(nums.length==0) return list;

boolean iscome=false;

int i=1;

String temp=""+nums[0];

while(i<nums.length) {

iscome=true;

if(nums[i]!=nums[i-1]+1) {

temp+="->";

temp+=nums[i-1];

list.add(temp);

temp=""+nums[i];

}

i++;

}

if(iscome) {

if(nums[i-1]==nums[i-2]+1) {

temp+="->";

temp+=nums[i-1];

list.add(temp);

}

else list.add(""+nums[i-1]);

} else{

list.add(""+temp);

}

String[] temps=new String[list.size()];

int k=0;

while(!list.isEmpty()) {

temps[k]=list.remove(0);

k++;

}

for(k=0;k<temps.length;k++){

if(temps[k].contains("->")){

String[] split=temps[k].split("->");

if(split[0].equals(split[1])){

temps[k]=split[0];

}

}

}

for(k=0;k<temps.length;k++)

list.add(temps[k]);

return list;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: