[Leetcode] Summary Ranges 统计区间

news/2024/5/17 8:18:22

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"].

双层迭代法

复杂度

时间 O(N) 空间 O(N)

思路

外层的while循环控制每个range的起点,内层的while循环控制range之内的递增。每当遍历完一个range,就把它记录到结果中,并更新下一个range的起点。这里的技巧是,判断一个数是否是在range内的,只要nums[start + range] - nums[start] = range就行了,即值之差等于下标之差。

代码

public class Solution {
    public List<String> summaryRanges(int[] nums) {
        List<String> res = new LinkedList<String>();
        if(nums.length == 0) return res;
        StringBuilder tmp = new StringBuilder();
        int start = 0;
        while(start < nums.length){
            int range = 1;
            // 遍历当前range内的所有数
            while(start + range < nums.length && (nums[start + range] - nums[start]) == range){
                range++;
            }
            // 遍历完了当前range,将其加入结果中
            tmp.append(nums[start]);
            if(range > 1){
                tmp.append("->");
                tmp.append(nums[start+range-1]);
            }
            res.add(tmp.toString());
            tmp = new StringBuilder();
            // 更新下一个range的起点
            start = start + range;
        }
        return res;
    }
}

http://www.niftyadmin.cn/n/3272124.html

相关文章

微信小程序(十)实战——请求后台数据(微信小程序+laravel)

1.刚开始是本地测试链接数据库&#xff0c;传递死数据&#xff0c;为了将前后流程走通&#xff0c;也就是给定一个数据从前台——》到后台——》前台显示&#xff1b; 2.现在我们是实战&#xff0c;直接干&#xff1b; ①本地测试为了方便&#xff0c;页面加载就请求后台数据 请…

RecycleView的使用

recycleView发布了好长时间了&#xff0c;一直没有用过&#xff0c;这让我意识到自己在获取新知识这方面做的不够好。最近一直在研究这个recycleview怎么用&#xff0c;现在简单的做一个记录。 首先是对包的引用&#xff0c;修改build.gradle的dependencies&#xff0c;添加一行…

唯品会面试被虐

笔试 1、选择题 选择题由单选和不定项选择组成。 唯品会的笔试相对于BAT的笔试来说&#xff0c;考的内容比较正常&#xff0c;考得都是比较常用的的知识&#xff0c;像数据库、操作系统、计算机网络、数据结构、C等。 2、大题&#xff08;五道选两道完成就可以了&#xff0c;个…

微信小程序(八)实战——加载图片images

1.加载本地图片 本地路径&#xff1a;/pages/images/1.png<image class"widget_arrow" src"/pages/images/1.png" mode"aspectFill"></image> 在wxss中设置图片样式.widget_arrow{width:25px; height:25px; }2.加载网络图片 网络图…

更改应用程序图标无效

使用Markdown编辑器 今天看了下之前写的小程序&#xff0c;想要给它换一个图标&#xff0c;在application里做了设置如下&#xff0c;结果发现不起作用&#xff0c;我确定文件名称没有写错&#xff0c;文件也放在了它该在的位置。结果就是在手机桌面显示的还是那个机器人的小图…

微信小程序(十一)实战——时间的获取,比较,判断(微信小程序 如何获取时间)

1.获取当前系统日期和时间 在小程序中&#xff0c;新建项目时&#xff0c;就会有一个utils.js文件&#xff0c;就是获取日期和时间的&#xff0c;代码如下&#xff1a; utils.js&#xff1a;const formatTime date > {const year date.getFullYear()const month date.get…

Android退出应用的方式

思路有这么几种&#xff1a; 1.把启动的activity都放入一个栈中&#xff0c;当要退出应用的时候遍历关闭 2.广播方式&#xff0c;基类的activity中添加广播接收器&#xff0c;接收到广播就关闭activity&#xff0c;其他activity继承这个activity&#xff0c;关闭时发送广播 …

javascript三级联动效果实现2

var text ""; for (i 0; i < data.length; i) {text "<option value" i " data-pId" data[i].pId ">" data[i].pName "</option>"; } $(".shengf").append(text); //step2:城市 var text…