• 228. Summary Ranges


    Given a sorted integer array without duplicates, return the summary of its ranges.

    Example 1:

    Input:  [0,1,2,4,5,7]
    Output: ["0->2","4->5","7"]
    Explanation: 0,1,2 form a continuous range; 4,5 form a continuous range.
    

    Example 2:

    Input:  [0,2,3,4,6,8,9]
    Output: ["0","2->4","6","8->9"]
    Explanation: 2,3,4 form a continuous range; 8,9 form a continuous range.
    class Solution {
        public List<String> summaryRanges(int[] nums) {
            int start = 0;
            int end = 0;
            int le = nums.length;
            List<String> res = new ArrayList<String>();
            
            for(int i = 0; i < le; i++){
                start = i;
                while(i + 1< le && nums[i+1] == nums[i] + 1){
                    end++;
                    i++;
                }
                if(start != end) res.add(nums[start] + "->" + nums[end]);
                if(start == end) res.add(nums[start] + "");
                end++;
            }
            return res;
        }
    }

    双指针法,碉堡。貌似这种求首尾的题都可以用双指针法。

    class Solution {
        public List<String> summaryRanges(int[] nums) {
            List<String> res = new ArrayList<>();
            int n = nums.length;
            int start = 0, end = 0;
            for(int i = 0; i < n; i++) {
                start = i;
                end = i;
                while(i < n - 1 && nums[i+1] == nums[i] + 1) {
                    i++;
                    end++;
                }
                if(end != start) res.add(nums[start] + "->" + nums[end]);
                else res.add(nums[start] + "");
            }
            return res;
        }
    }

    emmmm 我觉得这样表达更符合正常思维

    总结:

    we used two pointers to set a consecutive increament subarray. Everytime we get the start and end == i, then till there's not nums[i+1] == nums[i] + 1, we stop. Then if the end index didn't change, it means the next element is not consecutive. Otherwise, we add a summary of the subarray.

  • 相关阅读:
    codeforces #550D Regular Bridge 构造
    java学习路线-Java技术人员之路从0基础到高级
    iOSeasy造成循引用的场景
    Hybird App(一)----第一次接触
    PNP管理器简析--基于ReactOS0.33
    为什么寄存器比内存快?
    cookie 与 session 的差别、联系
    webstorm 配合IIS使用
    js实现可拉伸移动的div
    无法识别的属性“targetFramework”。请注意属性名称区分大小写
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/11915122.html
Copyright © 2020-2023  润新知