zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    jquery 添加关键字小插件
    打印出所有每一位都与其他位不重复的自然数
    尾递归版,斐波那契数列
    如何在移动端宽度自适应实现正方型?
    css隐藏元素的六类13种方法
    如何给行内元素设置宽高?
    css实现垂直水平居中的方法
    pwa
    目录树生成工具treer
    服务端返回的json数据,导致前端报错的原因及解决方法
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/11915122.html
Copyright © 2011-2022 走看看