当前位置: 首页 > news >正文

【面试经典150 | 区间】汇总区间

文章目录

  • Tag
  • 题目来源
  • 题目解读
  • 解题思路
    • 方法一:一次遍历
    • 复杂度分析
  • 其他语言
    • python3
    • C
  • 写在最后

Tag

【一次遍历】【数组】【字符串】


题目来源

228. 汇总区间


题目解读

给定一个无重复的升序数组 nums,需要将这个数组按照以下规则进行汇总:

  • 对于数组中的连续整数,比如0, 1, 2,输出连续区间"0->2"
  • 对于数组中的非连续整数,比如数组[0, 1, 2, 4]中的4,输出单独区间"4"

最后输出数组nums的汇总字符串。


解题思路

数据规模很小,时间复杂度上无需担心。

但是,数组中的数据值可能会取到int整型数据的边界处,边界处的+-*/计算容易越界,需要小心。比如 -2147483647 - -2147483648就会报错。

方法一:一次遍历

从数组0位置出发,向右遍历。使用start指针记录连续元素的起始值,end记录连续元素的终点值,在遍历中动态维护两个指针,在遍历过程中:

  • 如果start != end,则输出字符串"start->end"
  • 如果start == end,则表明该数字不属于任何连续的区间,需要作为一个单独的区间元素输出。

实现代码

class Solution {
public:vector<string> summaryRanges(vector<int>& nums) {vector<string> ret;int n = nums.size();int start, end;for (int i = 0; i < n;) {start = i;++i;while (i < n && nums[i] == nums[i-1] + 1) {++i;}end = i - 1;string tmp = to_string(nums[start]);if (start < end) {tmp += "->";tmp += to_string(nums[end]);}ret.push_back(tmp);}return ret;}
};

复杂度分析

时间复杂度: O ( n ) O(n) O(n) n n n 为数组 num 的长度。

空间复杂度: O ( 1 ) O(1) O(1),只使用了有限个变量。


其他语言

python3

class Solution:def summaryRanges(self, nums: List[int]) -> List[str]:res = []i = 0n = len(nums)while i < n:    # i 是连续的左端点j = i       # j 是连续的右端点while j + 1 < n and nums[j+1] == nums[j] + 1:j += 1strs = str(nums[i]) if i == j else f'{nums[i]}->{nums[j]}'res.append(strs)i = j + 1return res

C

/*** Note: The returned array must be malloced, assume caller calls free().*/
char ** summaryRanges(int* nums, int numsSize, int* returnSize){char** res = malloc(sizeof(char*) * numsSize);*returnSize = 0;int i = 0;while (i < numsSize) {int low = i;++i;while (i < numsSize && nums[i] == nums[i-1] + 1) {++i;}int high = i - 1;char* tmp = malloc(sizeof(char) * 25);sprintf(tmp, "%d", nums[low]);if (low < high) {sprintf(tmp + strlen(tmp), "->");sprintf(tmp +strlen(tmp), "%d", nums[high]);}res[(*returnSize)++] = tmp;}return res;
}

sprintf 是一个 C 标准库函数,用于将格式化的数据写入字符串中,而不是标准输出流或文件。它的使用方式类似于 printf,但它不会将输出写入控制台,而是将其存储在指定的字符串中。


写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。

相关文章:

【面试经典150 | 区间】汇总区间

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;一次遍历复杂度分析 其他语言python3C 写在最后 Tag 【一次遍历】【数组】【字符串】 题目来源 228. 汇总区间 题目解读 给定一个无重复的升序数组 nums&#xff0c;需要将这个数组按照以下规则进行汇总&#xff1…...

主流接口测试框架对比

公司计划系统的开展接口自动化测试&#xff0c;需要我这边调研一下主流的接口测试框架给后端测试&#xff08;主要测试接口&#xff09;的同事介绍一下每个框架的特定和使用方式。后端同事根据他们接口的特点提出一下需求&#xff0c;看哪个框架更适合我们。 需求 1、接口编写…...

LeetCode 150.逆波兰表达式求值

题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析 首先我们需要知道什么是逆波兰表达式&#xff0c;像我们平常遇到的都是中缀表达式&#xff0c;然而逆波兰确实后缀表达式&#xff0c;因此这个题目隐含的意思就是将一个后缀表达式转…...

华为---企业WLAN组网基本配置示例---AC+AP组网

ACAP组网所需的物理条件 1、无线AP---收发无线信号&#xff1b; 2、无线控制器(AC)---用来控制管理多个AP&#xff1b; 3、PoE交换机---能给AP实现网络连接和供电的交换机&#xff1b; 4、授权&#xff1a;默认AC管理的AP数量有限&#xff0c;买授权才能管控更多AP。 WLAN创建…...

循环结构的运用

乘法口诀起源于中国&#xff0c;是古代人进行乘法、除法、开方等运算的基本法则&#xff0c;距今已经有两千多年的历史了&#xff0c;如何运用现代计算机技术快速写出九九乘法表呢&#xff1f; 循环结构可以用来重复执行一条或者多条语句&#xff0c;利用循环结构可以减少源程序…...

深度强化学习第 1 章 机器学习基础

1.1线性模型 线性模型&#xff08;linear models&#xff09;是一类最简单的有监督机器学习模型&#xff0c;常被用于简单的机 器学习任务。可以将线性模型视为单层的神经网络。本节讨论线性回归、逻辑斯蒂回归&#xff08;logistic regression&#xff09;、 softmax 分类器等…...

第一章 STM32 CubeMX (CAN通信发送)基础篇

第一章 STM32 CubeMX &#xff08;CAN通信&#xff09;基础篇 文章目录 第一章 STM32 CubeMX &#xff08;CAN通信&#xff09;基础篇STM32中文手册简介简介stm32f1系列CAN的特点CAN连接网络示意图硬件电路CAN波特率计数 一、 STM32 CubeMX设置设置波特率工程目录结构添加CAN驱…...

原子性操作

原子性操作是指一个操作在执行过程中不会被中断&#xff0c;要么全部执行成功&#xff0c;要么全部不执行&#xff0c;不会出现部分执行的情况。原子性操作对于多线程并发编程至关重要&#xff0c;因为它可以确保多个线程之间不会出现竞态条件或数据不一致性。 在计算机科学中…...

论文阅读:Segment Any Point Cloud Sequences by Distilling Vision Foundation Models

目录 概要 Motivation 整体架构流程 技术细节 小结 论文地址&#xff1a;[2306.09347] Segment Any Point Cloud Sequences by Distilling Vision Foundation Models (arxiv.org) 代码地址&#xff1a;GitHub - youquanl/Segment-Any-Point-Cloud: [NeurIPS23 Spotlight]…...

Netty 入门 — 亘古不变的Hello World

这篇文章我们正式开始学习 Netty&#xff0c;在入门之前我们还是需要了解什么是 Netty。 什么是 Netty 为什么很多人都推崇 Java boy 去研究 Netty&#xff1f;Netty 这么高大上&#xff0c;它到底是何方神圣&#xff1f; 用官方的话说&#xff1a;Netty 是一款异步的、基于事…...

idea插件开发javax.net.ssl.SSLException: No PSK available. Unable to resume.

idea插件开发,编译出错 javax.net.ssl.SSLException: No PSK available. Unable to resume.at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:129)at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)at java.base/sun.security.ssl.…...

Selenium的WebDriver操作页面的超时或者元素重叠引起的ElementClickInterceptedException

超时 处理由页面加载引起的超时是在使用 Selenium 进行自动化测试中常见的任务。页面加载可能因网络速度慢、页面复杂性或异步操作而导致超时。以下是一些处理页面加载超时的方法&#xff1a; 1.设置隐式等待时间&#xff1a; 使用 implicitly_wait 方法可以设置隐式等待时间…...

oracle数据库的缓存设置

Oracle缓存由两个参数控制SGA_TARGET和PGA_AGGREGATE_TARGET&#xff0c;设置了这两个参数&#xff0c;其他的基本内存部分都由Oracle自动配置为最优值&#xff0c;这也是Oracle推荐的方式。 SGA_TARGET 和PGA_AGGREGATE_TARGET是动态参数&#xff0c;可以在不重启数据库的情况…...

算法通关村第一关-链表青铜挑战笔记

欢迎来到 : 第一关青铜关 java如何创建链表链表怎么增删改查 我们先了解链表 单链表的概念 我们从简单的创建和增删改查开始. 链表的概念 线性表分为顺序表(数组组成)和链表(节点组成) . 链表又分: 单向 双向有哨兵节点 无哨兵节点循环 不循环 链表是一种物理存储单…...

✔ ★【备战实习(面经+项目+算法)】 10.15学习时间表

✔ ★【备战实习&#xff08;面经项目算法&#xff09;】 坚持完成每天必做如何找到好工作1. 科学的学习方法&#xff08;专注&#xff01;效率&#xff01;记忆&#xff01;心流&#xff01;&#xff09;2. 每天认真完成必做项&#xff0c;踏实学习技术 认真完成每天必做&…...

pytorch 训练时raise EOFError EOFError

训练到一半时获取验证数据报错 报错代码 imgs next(iter(val_dataloader)) val_dataloader DataLoader(ImageDataset("data/%s" % opt.dataset_name, transforms_transforms_, unalignedTrue, mode"test"),batch_size5,shuffleTrue,num_workers2,)def …...

node.js+NPM包管理器+Webpack打包工具+前端项目搭建

javascript运行环境&#xff08;无需依赖html文件&#xff09; BFF&#xff0c;服务于前端的后端 官网下载安装&#xff0c;node -v查看是否安装成功 ①、创建一个01.js文件 //引入http模块 const httprequire(http)//创建服务器 http.createServer(function(request,respo…...

PCL点云处理之基于FPFH特征的全局配准流程具体实现(二百二十一)

PCL点云处理之基于FPFH特征的全局配准流程具体实现(二百二十一) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 PCL点云库提供的多种工具,可以组合为一套完整的点云配准流程,这里选择FPFH特征,进行具体的配准流程实现,主要内容包括点云读取、点云法线计算、点云特征…...

ai_drive67_基于不确定性的多视图决策融合

论文链接&#xff1a;https://openreview.net/forum?idOOsR8BzCnl5 https://arxiv.org/abs/2102.02051 代码链接&#xff1a;https://github.com/hanmenghan/TMC Zongbo Han, Changqing Zhang, Huazhu Fu, Joey Tianyi Zhou, Trusted Multi-View Classification, Internatio…...

Docker逃逸---procfs文件挂载

一、产生原因 将宿主机/proc目录挂载进了容器&#xff0c;而该目录内的/proc/sys/kernel/core_pattern文件是负责进程奔溃时内存数据转储的&#xff0c;当第一个字符是| 管道符时&#xff0c;后面的部分会以命令行的方式进行解析并运行&#xff0c;攻击者可以将恶意文件写入该…...

AHB与APB总线桥接设计及SoC系统优化

1. AHB总线架构与APB桥接设计精要在复杂SoC设计中&#xff0c;AMBA总线作为ARM架构的核心互联标准&#xff0c;其AHB&#xff08;Advanced High-performance Bus&#xff09;与APB&#xff08;Advanced Peripheral Bus&#xff09;的协同工作直接影响系统性能。APB桥作为高低速…...

终极指南:如何用decimal.js解决JavaScript高精度计算难题

终极指南&#xff1a;如何用decimal.js解决JavaScript高精度计算难题 【免费下载链接】decimal.js An arbitrary-precision Decimal type for JavaScript 项目地址: https://gitcode.com/gh_mirrors/de/decimal.js 你知道吗&#xff1f;JavaScript在处理小数计算时有一个…...

Dev Containers实战:容器化开发环境配置与团队协作指南

1. 项目概述&#xff1a;一个容器化的开发环境定义仓库如果你和我一样&#xff0c;经常需要在不同的机器上切换工作&#xff0c;或者团队里有新成员加入&#xff0c;那么“环境配置”这件事&#xff0c;绝对能排进程序员最头疼问题的前三名。我经历过无数次这样的场景&#xff…...

【雕爷学编程】Arduino动手做(1)---干簧管传感器模块

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和各种模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备逐一做做小实验,不管能否成功,都会记录下来—小小的进步或是搞不掂…...

MyScaleDB:基于SQL的向量数据库实战,实现混合查询与AI应用开发

1. 项目概述&#xff1a;当向量数据库遇见SQL如果你最近在折腾大模型应用&#xff0c;尤其是想给AI应用加上“长期记忆”或者实现精准的文档问答&#xff0c;那你大概率已经听过“向量数据库”这个词。从早期的Milvus、Pinecone&#xff0c;到后来各大云厂商纷纷入局&#xff0…...

实测Taotoken多模型聚合服务的响应延迟与稳定性观感

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 实测Taotoken多模型聚合服务的响应延迟与稳定性观感 1. 引言 在将大模型能力集成到实际应用的过程中&#xff0c;开发者除了关注模…...

PowerToys Awake终极指南:如何让Windows电脑在你需要时永不休眠?

PowerToys Awake终极指南&#xff1a;如何让Windows电脑在你需要时永不休眠&#xff1f; 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/GitHub_…...

基于MCP协议与AI的智能收据处理服务器:从OCR到结构化提取实战

1. 项目概述&#xff1a;一个专为收据处理而生的MCP服务器如果你经常需要处理各种格式的收据、发票或账单&#xff0c;无论是个人记账、公司报销&#xff0c;还是财务审计&#xff0c;那么你肯定对“数据录入”这个繁琐环节深恶痛绝。一张张纸质或电子收据&#xff0c;上面的关…...

抖音去水印免费版哪个好用?2026实测推荐与软件对比

抖音去水印免费版哪个好用&#xff1f;2026实测推荐与软件对比 刷到一条有意思的视频想保存下来发给朋友&#xff0c;下载后却发现左上角顶着一串"用户名"水印&#xff1b;好不容易找到一段适合做素材的内容&#xff0c;画面边缘那行字怎么裁都裁不干净。这几乎是每个…...

边缘计算安全:保护边缘环境的安全

边缘计算安全&#xff1a;保护边缘环境的安全 一、边缘计算安全概述 1.1 边缘计算安全的定义 边缘计算安全是指保护边缘计算环境中的数据、设备和应用的安全。它包括边缘节点的安全、网络安全、数据安全和应用安全等方面。 1.2 边缘计算安全的价值 数据保护&#xff1a;保护边缘…...