算法-Summary Ranges-汇总区间

海康Camera MVS Linux SDK二次开发封装ROS packge过程记录(c++) https://www.hikrobotics.com/machinevision/service/download?module=0 阅读详情

1、题目描述

给定一个无重复元素的有序整数数组 nums 。
返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。
列表中的每个区间范围 [a,b] 应该按如下格式输出:
"a->b" ,如果 a != b
"a" ,如果 a == b
 

示例 1:
输入:nums = [0,1,2,4,5,7]
输出:["0->2","4->5","7"]
解释:区间范围是:
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"

2、题目分析

  • 将所有连续的元素按照要求的格式输出
  • 需要判断连续的元素是否是单个的
  • 需要两个变量记录左右边界

3、代码实现

class Solution {
    public List<String> summaryRanges(int[] nums) {
        List<String> res = new ArrayList<>();
        if(nums.length == 0) return res;
        int left = 0,right = 1;//左右边界
        while(right < nums.length){//更新左右边界
            if(nums[right] == nums[right - 1] + 1){
                right++;
            }else{
                //记录结果
                StringBuilder sb = new StringBuilder();
                if(right - left == 1){
                    sb.append(nums[left]);
                }else{
                    sb.append(nums[left]);
                    sb.append("->");
                    sb.append(nums[right - 1]);
                }
                res.add(sb.toString());
                left = right;
                right++;
            }
        }
        //最后的判断
        StringBuilder sb = new StringBuilder();
        if(right - left == 1){
            sb.append(nums[left]);
        }else{
            sb.append(nums[left]);
            sb.append("->");
            sb.append(nums[right - 1]);
        }
        res.add(sb.toString());
        //输出结果
        return res;
    }
}
//写的优雅一点
class Solution {
    public List<String> summaryRanges(int[] nums) {
        List<String> res = new ArrayList<>();
        // i 初始指向第 1 个区间的起始位置
        int i = 0;
        for (int j = 0; j < nums.length; j++) {
            // j 向后遍历,直到不满足连续递增(即 nums[j] + 1 != nums[j + 1])
            // 或者 j 达到数组边界,则当前连续递增区间 [i, j] 遍历完毕,将其写入结果列表。
            if (j + 1 == nums.length || nums[j] + 1 != nums[j + 1]) {
                // 将当前区间 [i, j] 写入结果列表
                StringBuilder sb = new StringBuilder();
                sb.append(nums[i]);
                if (i != j) {
                    sb.append("->").append(nums[j]);
                }
                res.add(sb.toString());
                // 将 i 指向更新为 j + 1,作为下一个区间的起始位置
                i = j + 1;
            }
        }
        return res;
    }
}

4、复杂度分析

  • 时间复杂度:O(n)
  • 空间复杂度:O(1)
SLAM 轨迹评估工具——EVO安装、使用介绍 evo是一款用于视觉里程计和SLAM问题的轨迹评估工具. 核心功能是能够绘制相机的轨迹, 或评估轨迹与真值之间的误差. 支持多种数据集的轨迹格式(TUM、KITTI、EuRoC MAV、ROS的bag), 同时支持这些数据格式之间的相互转换,本文轨迹展示以tum数据格式为例。 阅读详情

相关推荐

Windows7 64位系统PL2303驱动无法安装问题解决

问题描述:电脑安装的是Win7 64位的旗舰版,USB to RS232这种线很简单,对于笔记本如果要用串口,就不能少了它了。USB to RS232转换芯片种类繁多,常见的有ch340,0108,PL2303,FT232等,这里面FT232的应该价格是相对比较贵的,因为FTDI的芯片本身比较贵。由于买了一根PL2303芯片的USB to RS232转换线,于是插上后发现驱动无法安装,又是在设备管

suxiang198的博客 5809

LeetCode 228. 汇总区间(简单)

228. 汇总区间 给定一个无重复元素的有序整数数组nums。 返回恰好覆盖数组中所有数字的最小有序区间范围列表。也就是说,nums的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于nums的数字x。 列表中的每个区间范围[a,b]应该按如下格式输出: "a->b",如果a != b "a",如果a == b 示例 1: 输入:nums = [0,1,2,4,5,7] 输出:["0->2","4->5","7"] 解释...

VictorKa的博客 278

从零开始写一个RTSP服务器(一)RTSP协议讲解

从零开始写一个RTSP服务器系列 从零开始写一个RTSP服务器(一)不一样的RTSP协议讲解 从零开始写一个RTSP服务器(二)RTP传输H.264(待写) 从零开始写一个RTSP服务器(三)一个传输H.264的RTSP服务器(待写) 从零开始写一个RTSP服务器(四)RTP传输AAC(待写) 从零开始写一个RTSP服务器(五)一个传输AAC的RTSP服务器(待写) 从零开始写一个RTSP服务器(...

JT同学的博客 7万+

LeetCode 1477. 找两个和为目标值且不重叠的子数组--双指针双向处理记录前缀

找两个和为目标值且不重叠的子数组 给你一个整数数组 arr 和一个整数值 target 。 请你在 arr 中找 两个互不重叠的子数组 且它们的和都等于 target 。可能会有多种方案,请你返回满足要求的两个子数组长度和的 最小值 。 请返回满足要求的最小长度和,如果无法找到这样的两个子数组,请返回 -1 。 示例 1: 输入:arr = [3,2,2,4,3], target = 3 输出:2 解释:只有两个子数组和为 3 ([3] 和 [3])。它们的长度和为 2 。 示例 2: 输入:arr =.

weixin_43918046的博客 417

我想自己组装一台服务器,微调大模型通义千问2.5 Omni 72B,但是我是个人购买,资金非常有限,最省的方案

阶段动作✅ 推理用 GGUF + llama.cpp + 4090 加载 14B INT4✅ 微调训练 Qwen2.5-7B-Chat,使用 LoRA / QLoRA❌ 放弃Qwen2.5-Omni-72B 全量微调(显存需求 >160G,不现实)

AngelCryToo的专栏 2822

工业质检实战:用海康VisionMaster的BLOB分析搞定PCB焊点缺陷检测

本文详细介绍了如何利用海康VisionMaster平台的BLOB分析技术,构建一套针对PCB焊点缺陷的自动化视觉检测方案。文章从核心原理出发,重点阐述了如何通过动态阈值分割和模板匹配定位,克服工业现场光照不均、位置偏移等挑战,实现虚焊、漏焊等缺陷的精准、稳定检测,并提供了实战调优与系统集成的关键思路。

weixin_29091105的博客 560

C++ 输出数组的全部子区间

问题表述:输出数组的全部子区间。 示例: 输入数组:nums = [1,2,3,4,5]; 输出:[ [1], [2], [3], [4], [5], [1,2], [2,3], [3,4], [4,5], [1,2,3], [2,3,4], [3,4,5], [1,2,3,4], [2,3,4,5], [1,2,3,4,5] ] 代码实现: #include <vector> #include <iostream> using namespace std; int main(

花言的博客 1493

Signoff Criteria --- ocv/aocv/pocv之AOCV介绍

Advanced on chip variation,相比较于OCV来说,对于悲观度的去除很有效。相比较与ocv对于整个design中的lauch/capture path设置统一的derate值,aocv通过将cell derate值与cell的逻辑深度以及实际的位置结合起来进行derate值的设定。那么这种derate如何能够设置到具体的cell呢,其实是我们在跑STA时候会读入相关的aocv lib file,里面有专门对相关的cell进行的aocv derate值的描述。> table: \

sinat_27691203的博客 7853

给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个(单调栈)

给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个: 区间中的最小数 × 区间所有数的和最后程序输出经过计算后的最大值即可,不需要输出具体的区间。

baidu_38797690的博客 2033

当C#遇见声音魔法:从麦克风到文字的0.1秒奇幻漂流

为什么选300Hz?因为人声基频通常在85-255Hz,但清脆的“啊”可能到2kHz,所以300Hz是安全区!(参考知识库[1])

墨夶的博客 365

推荐系统(六)双塔模型

双塔模型是推荐场景中常用的粗排模型之一,本节主要介绍几种典型的双塔模型及其变型,如SENet 双塔模型,并联双塔,蒸馏学习,对偶增强双塔,阿里 COLD。

Jin_Kwok的博客 5143

leetcode 228.汇总区间

汇总区间(让博主饱受折磨的普通题) 题目 给定一个无重复元素的有序整数数组nums 要求返回恰好覆盖数组中所有数字的最小有序区间范围列表 即:nums中的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于nums的数字x【用我的理解就是要求“刚刚好,不多也不少,skr~”】 列表中的每个区间范围[a,b]应该按如下格式输出: “a->b”,如果a!=b “a”,如果a==b 示例: 输入:nums = [0,1,2,4,5,7] 输出:["0->2","4->5","7

m0_45175414的博客 280

【人工智能】全面盘点国内AI九大模型:各擅胜场的智能先锋(豆包、文心一言、讯飞星火、通义千问、Kimi、智谱清言、腾讯元宝、秘塔、天工AI)

追求性价比与全能:选豆包,适合个人与中小企业日常使用;侧重中文创作与理解:选文心一言,文学与商业文案创作首选;需要专业语音交互:选讯飞星火,智能客服、车载场景必备;看重生态与多场景:选通义千问,适配电商、办公等企业需求;处理超长文本任务:选Kimi,文档分析、学术研究的利器;专注深度推理创作:选智谱清言,学术与创意写作的伙伴;依赖腾讯生态协同:选腾讯元宝,日常轻量需求的便捷之选;深耕法律学术领域:选秘塔,专业文本处理的权威工具;布局前沿技术体验:选天工AI,享受接近国际顶尖的智能服务。

奶爸的编程之路,也就一周冷个三天 1121

leetcode228. 汇总区间

题目 给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。 示例 1: 输入: [0,1,2,4,5,7] 输出: [“0->2”,“4->5”,“7”] 解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。 示例 2: 输入: [0,2,3,4,6,8,9] 输出: [“0”,“2->4”,“6”,“8->9”] 解释: 2,3,4 可组成一个...

qq_39448574的博客 262

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Leetcode之Summary Ranges 问题

问题描述: Given a sorted integer array without duplicates, return the summary of its ranges. 示例一: Input: [0,1,2,4,5,7] Output: ["0->2","4->5","7"] 示例二: Input: [0,2,3,4,6,8,9] Output: ["0","2->4","6

漫漫学习路 288

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【LeetCode】228. Summary Ranges 汇总区间(Easy)(JAVA)

【LeetCode】228. Summary Ranges 汇总区间(Easy)(JAVA) 题目地址: https://leetcode.com/problems/summary-ranges/ 题目描述: You are given a sorted unique integer array nums. Return the smallest sorted list of ranges that cover all the numbers in the array exactly. That is, e

qq_16927853的博客 257

228. 汇总区间(Summary Ranges)

228. 汇总区间(Summary Ranges)题解三指针复杂度分析PythonJava(待完成) 题解 三指针 特判,若数组长度为1,返回str(nums[0])str(nums[0])str(nums[0]) 初始化左右指针l=0,r=0l=0,r=0l=0,r=0和当前访问指针cur=0cur=0cur=0。初始化结果res=[]res=[]res=[] 循环条件cur<...

朱师傅的博客 244

[Swift]LeetCode228. 汇总区间 | Summary Ranges

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://www.cnblogs.com/streng...

weixin_30367169的博客 193

228、汇总区间(Summary Ranges)

228、汇总区间(Summary Ranges) 题目: 给定一个无重复元素的有序整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,b] 应该按如下格式输出: "a->b" ,如果 a != b "a" ,如果 a == b 示例 1: 输入:nums = [0,1,2,4,5,7] 输出:["0->2","4-&gt

南极没有熊的博客 394

[Java]Summary Ranges 统计区间

leetcode 原题链接:https://leetcode.com/problems/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",

成为一个合格的IT工作者 1352

【Leetcode】228. Summary Ranges

当遍历到一个位置的时候,先判断其是否自成一个区间,如果是,则加入答案,然后从后一个数继续遍历;否则开一个指针向后拓展,将所得区间加入答案后,从后一个数继续遍历。,返回其分成若干区间的所有区间。给定一个严格升序数组。

数学、算法爱好者的博客 150

228. Summary Ranges

228. Summary Ranges方法1:方法2: two pointers 方法1: 思路: 用 j 来记录interval的长度,区别对待区间长度为1 和&amp;amp;gt;1的输出 class Solution { public: vector&amp;amp;lt;string&amp;amp;gt; summaryRanges(vector&amp;amp;lt;int&amp;amp;gt;&amp;amp;amp; nums) {

wilzxu的博客 162

leetcode 228. 汇总区间(Summary Ranges)

给定一个无重复元素的有序整数数组,返回数组中区间范围的汇总。 示例 1: 输入: [0,1,2,4,5,7] 输出: [“0-&gt;2”,”4-&gt;5”,”7”] 示例 2: 输入: [0,2,3,4,6,8,9] 输出: [“0”,”2-&gt;4”,”6”,”8-&gt;9”] 思路:因为是有序数组,直接遍历,用start记录当次区间起点,当num...

liujunzxcv的专栏 648

[LeetCode]228.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”].

SmartSi 1934

Leetcode 228. 汇总区间(Summary Ranges)

Leetcode 228.汇总区间 1 题目描述(leetcode题目链接)   给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。 输入: [0,1,2,4,5,7] 输出: ["0->2","4->5","7"] 解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。 输入: [0,2,3,4,6,8,9] 输出: ["0","2->4","6"...

qq_39378221的博客 323

LeetCode 228. Summary Ranges(归纳区间)

原题网址:https://leetcode.com/problems/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

James Pan 913

leetcode 228. 汇总区间(LeetCode 228. Summary Ranges)

给定一个无重复元素的有序整数数组,返回数组中区间范围的汇总。 示例 1: 输入: [0,1,2,4,5,7] 输出: [“0-&gt;2”,”4-&gt;5”,”7”] 示例 2: 输入: [0,2,3,4,6,8,9] 输出: [“0”,”2-&gt;4”,”6”,”8-&gt;9”] 遍历整个数组,用start记录起始位置,当遇到一个nums[i] !=...

liujunzxcv的专栏 580
上一篇: 算法-Best Time to Buy and Sell Stock III-买卖股票的最佳时机III
下一篇: MySQL-普通索引和唯一索引速度对比-深入分析
酱油瓶啤酒杯
博客等级 码龄8年 35粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值