228サマリレンジ

ブラシ
6月- 19から2019

この質問は実際には、デメリットなかった単純すぎると感じていてもよいです。

レンツの練習

    public List<String> summaryRanges(int[] nums) {
        List<String> result = new ArrayList<>();
        if (nums.length == 0) return result;
        
        StringBuilder sb = new StringBuilder();
        int prev = nums[0];
        sb.append(prev);
        for (int i = 1; i < nums.length; i ++) {
            int temp = nums[i];
            if (temp == prev + 1) {
                prev = temp;
            } else {
                if (prev != Integer.valueOf(sb.toString())) {
                    sb.append("->").append(prev);
                }
                result.add(sb.toString());
                sb = new StringBuilder();
                sb.append(temp);
                prev = temp;
            }
        }
        
        if (prev != Integer.valueOf(sb.toString())) {
                sb.append("->").append(prev);
        }
        result.add(sb.toString());
        return result; 
    }

NUMS [1 -次に、他方はNUMS [R]を介してである ] == R - L に素早く完全1-> Rの
欠点[1,3,5,7,9,11]各Rを有するされています右端左端に、それはO(n²)Aとなっていますから、

    public List<String> summaryRanges(int[] nums) {
        List<String> result = new ArrayList<>();
        if (nums.length == 0) return result;
        
        int r = nums.length - 1;
        for (int l = 0; l < nums.length; l ++) {
            while (l <= r) {
                if (nums[l] == nums[r]) {
                    result.add(new StringBuilder(Integer.toString(nums[l])).toString());
                    r = nums.length - 1;
                    break;
                } else if (nums[r] - nums[l] == r - l) {
                    result.add(new StringBuilder(Integer.toString(nums[l]))
                                                            .append("->")
                                                            .append(nums[r])
                                                            .toString());
                    l = r;
                    r = nums.length - 1;
                    break;
                } else {
                    r --;
                }
            }
        }

        return result;
    }

実際には、あなたは、道の並べ替えをマージする同様の二分法ができ、欠点はトラブルスポットをマージする時間です、あなたは[1-3] [4-5]及び[3] [4] =この場合=何も、私は書くのは少し怠惰な午前に対処する必要があります。

おすすめ

転載: www.cnblogs.com/reboot329/p/11057909.html