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;
        }
  • 相关阅读:
    求公约数和比值
    HTML5 文件上传
    js判断是pc还是移动端
    ssm整合
    如何获取数据表中自增主键的值
    MyBatis全局配置文件标签详解
    MyBatis介绍及使用
    基于Spring MVC的文件上传和下载功能的实现
    Spring IOC容器交给application域对象管理
    SpringMVC的简单介绍及使用
  • 原文地址:https://www.cnblogs.com/maydow/p/4641134.html
Copyright © 2011-2022 走看看