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;
        }
  • 相关阅读:
    How to get IWin32Window for Show/ShowDialog in Excel
    SSL 改变端口 ReportViewer 超级慢
    RportViewer(20121023) 参数引起的异常
    IKVM.NET[Java to C#]
    knockoutjs(03) ko + jquery ui
    我的四色
    vsto to fill data use listobject fill
    sinsspp 插件和主题安装
    自动化测试
    HTTP Error 500.19
  • 原文地址:https://www.cnblogs.com/maydow/p/4641134.html
Copyright © 2011-2022 走看看