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

    思路:采用双指针  start和end

    时间复杂度:O(n)

    代码:

        public List<String> summaryRanges(int[] nums) {
            List<String> list=new ArrayList<String>();
            int start=0,end=0;
            while(end++<nums.length)
            {
                if(end==nums.length)
                {
                    if(start==end-1)
                        list.add(""+nums[start]);
                    else {
                        String string=nums[start]+"->"+nums[end-1];
                        list.add(string);
                    }
                    break;
                }
                if(nums[end-1]+1==nums[end])
                    continue;
                else{
                    String string=((start!=end-1)?(nums[start]+"->"+nums[end-1]):""+nums[start]);
                    list.add(string);
                    start=end;
                }
            }
            return list;
        }

    继续优化:

    将判断是否最后一个的语句进行整合

        public List<String> summaryRanges(int[] nums) {
            List<String> list=new ArrayList<String>();
            int start=0,end=0;
            while(end++<nums.length)
            {
                if(end!=nums.length && nums[end-1]+1==nums[end])
                    continue;
                else{
                    String string=((start!=end-1)?(nums[start]+"->"+nums[end-1]):""+nums[start]);
                    list.add(string);
                    start=end;
                }
            }
            return list;
        }

    扩展:假如存在重复的数呢?

        public List<String> summaryRanges(int[] nums) {
            List<String> list=new ArrayList<String>();
            int start=0,end=0;
            while(end++<nums.length)
            {
                if(end!=nums.length && (nums[end-1]+1==nums[end] || nums[end-1]==nums[end]))
                    continue;
                else{
                    String string=((start!=end-1)?(nums[start]+"->"+nums[end-1]):""+nums[start]);
                    list.add(string);
                    start=end;
                }
            }
            return list;
        }
  • 相关阅读:
    1635:【例 5】Strange Way to Express Integers
    1633:【例 3】Sumdiv
    1632:【 例 2】[NOIP2012]同余方程
    1631:【例 1】青蛙的约会
    1629:聪明的燕姿
    1628:X-factor Chain
    1627:【例 3】最大公约数
    1626:【例 2】Hankson 的趣味题
    file_put_contens小trick
    billu b0x2靶机渗透
  • 原文地址:https://www.cnblogs.com/maydow/p/4641134.html
Copyright © 2011-2022 走看看