(java)Summary Ranges

来源:互联网 发布:已过期域名 取消备案 编辑:程序博客网 时间:2024/06/05 19:23

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

0 0
原创粉丝点击