【leetcode算法】Summary Ranges

算法描述:

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"].

我解决该问题的基本思路是:nums[i] - i,如果是相邻的两个数的话,那么这个值是相等的。但是有几个特殊的边界条件需要注意。

  • 处理两个连续的非递增的数值

  • 最后一个数值依然处于递增中

public List<String> getArraySort(int[] nums) {
    List<String> mList = new ArrayList<String>();
    int i = 0;
    while (i < nums.length) {
        String str = nums[i] + "";
        int startDelta = nums[i] - i;
        for (int j = i + 1; j < nums.length; j++) {
            int compareDelta = nums[j] - j;
            if (compareDelta != startDelta) {
                if (j != i + 1) {
                    str += ("->" + nums[j - 1]);
                    i = j - 1;
                }
                break;
            } else {
                if (j == nums.length - 1) {
                    str += ("->" + nums[j]);
                    i = j ;
                    break;
                }
            }
        }
        i++;
        mList.add(str);
    }
    return mList;
}


你可能感兴趣的:(LeetCode,算法)