Day 27

题目描述

在这里插入图片描述

思路

做法

  1. 特殊处理空数组和数组只有一个元素的情况
  2. 设置beg,end标记范围的起始和结束,x用来比较元素是否有序(初始end和beg都指向nums[0[,x为nums[0]+1)
  3. 遍历数组
  4. 如果当前元素等于x,说明他和上一个元素是有序的,x++,并且将end指向它
  5. 如果当前元素不是x,说明该元素与前一个元素不有序,处理
  6. 如果此时end==beg,说明只有一个元素有序,直接加入结果集合
  7. 如果beg!=end说明,存在起始和结束点,组合成规定形式,加入结果集合
  8. 清空字符串修改beg,end都指向当前元素,x=当前元素值加1
  9. 遍历到最后一个元素需要特殊处理(原因在于最后一个元素如果与前一个有序,会直接结束循环,不有序也只是指向了它并没有加入结果集)
class Solution {public List<String> summaryRanges(int[] nums) {ArrayList<String> list = new ArrayList<>();String s="";if(nums.length == 0) return list;if(nums.length == 1) list.add(String.valueOf(nums[0]));int beg=nums[0],end=nums[0],x=beg+1;StringBuilder sb = new StringBuilder(s);for (int i = 1; i < nums.length; i++) {if(x==nums[i]){x++;end=nums[i];}else {if(end==beg){sb.append(end);list.add(sb.toString());}else{sb.append(beg+"->"+end);list.add(sb.toString());}sb.delete(0,sb.length());beg=end=nums[i];x=beg+1;}if(i==nums.length-1){if(beg==nums[i]){sb.append(end);list.add(sb.toString());}else{list.add(beg+"->"+nums[i]);}}}return list;}
}

题目描述

在这里插入图片描述

思路

初次做法:对于两个范围是否能够合并,有以下几种情况用范围(a,b)和(a1,b1)表示

  • a a1 b1 b
  • a1 a b b1
  • a a1 b b1
  • a1 a b1 b
  • a1 b1 a b (b1==a)
  • a b a1 b (b==a1)
    我的做法是从前向后遍历,处理每个元素与其之后的元素进行合并,将合并结果存放在后面的元素中,如果哪次循环没有完成合并,说明取得的就是最大合并区间 ,取出来存放。
class Solution {public int[][] merge(int[][] intervals) {int[]beg=new int[intervals.length];int[]end=new int[intervals.length];int sum=0;int x=0;for (int i = 0; i < intervals.length; i++) {beg[sum] = intervals[i][0];end[sum] = intervals[i][1];x=0;for (int j = i + 1; j < intervals.length; j++) {if( (beg[sum]<=intervals[j][0]&&end[sum]>=intervals[j][0]&&end[sum]<=intervals[j][1])||(beg[sum]>=intervals[j][0]&&end[sum]<=intervals[j][1])||(beg[sum]<=intervals[j][0]&&end[sum]>=intervals[j][1]&&beg[sum]>=intervals[j][0])||(beg[sum]<=intervals[j][0]&&end[sum]>=intervals[j][1])||(beg[sum]>=intervals[j][0]&&end[sum]>=intervals[j][1]&&beg[sum]<=intervals[j][1])) {x=1;intervals[j][0]=Math.min(beg[sum],intervals[j][0]);intervals[j][1]=Math.max(end[sum],intervals[j][1]);}}if(x==0){sum++;}}int[][] result=new int[sum][2];for (int i = 0; i < sum; i++) {result[i][0] = beg[i];result[i][1] = end[i];}return result;}
}

题解做法:按照区间的左端点排序,那么在排完序的列表中,可以合并的区间一定是连续的。如果当前区间的左端点在数组 merged 中最后一个区间的右端点之后,那么它们不会重合,我们可以直接将这个区间加入数组 merged 的末尾;否则,它们重合,我们需要用当前区间的右端点更新数组 merged 中最后一个区间的右端点,将其置为二者的较大值。

class Solution {public int[][] merge(int[][] intervals) {if (intervals.length == 0) {return new int[0][2];}Arrays.sort(intervals, new Comparator<int[]>() {public int compare(int[] interval1, int[] interval2) {return interval1[0] - interval2[0];}});List<int[]> merged = new ArrayList<int[]>();for (int i = 0; i < intervals.length; ++i) {int L = intervals[i][0], R = intervals[i][1];if (merged.size() == 0 || merged.get(merged.size() - 1)[1] < L) {merged.add(new int[]{L, R});} else {merged.get(merged.size() - 1)[1] = Math.max(merged.get(merged.size() - 1)[1], R);}}return merged.toArray(new int[merged.size()][]);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/80006.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/80006.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/80006.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【c++深入系列】:万字string详解(附有sso优化版本的string模拟实现源码)

&#x1f525; 本文专栏&#xff1a;c &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 当你想放弃时&#xff0c;想想为什么当初坚持走到了这里 ★★★ 本文前置知识&#xff1a; 类和对象&#xff08;上&#xff09; 类和对…

Spark-Streaming简介和核心编程

Spark-Streaming简介 概述&#xff1a;用于流式数据处理&#xff0c;支持Kafka、Flume等多种数据输入源&#xff0c;可使用Spark原语运算&#xff0c;结果能保存到HDFS、数据库等。它以DStream&#xff08;离散化流&#xff09;为抽象表示&#xff0c;是RDD在实时场景的封装&am…

verilog中的约束信息

1、保持约束 keep&#xff1a;当编译器在对FPGA设计进行映射时&#xff0c;一些线网将会被吸收到逻辑块中。 (* KEEP "{TRUE | FALSE}" *) keep_hierarchy:vivado默认会把设计变成一级一级模块化的调用转换为一个没有子模块的超大模块。这个约束会保留部分层级关系…

Missashe考研日记-day24

Missashe考研日记-day24 1 专业课408 学习时间&#xff1a;2h30min学习内容&#xff1a; 今天把剩下的两个经典同步问题和管程部分的课看了&#xff0c;然后做课后习题。这部分的重点在PV大题&#xff0c;很多很经典&#xff0c;不过第一轮不打算做大题&#xff0c;把选择题做…

力扣每日打卡17 49. 字母异位词分组 (中等)

力扣 49. 字母异位词分组 中等 前言一、题目内容二、解题方法1. 哈希函数2.官方题解2.1 前言2.2 方法一&#xff1a;排序2.2 方法二&#xff1a;计数 前言 这是刷算法题的第十七天&#xff0c;用到的语言是JS 题目&#xff1a;力扣 49. 字母异位词分组 (中等) 一、题目内容 给…

C#抽象类和虚方法的作用是什么?

抽象类 (abstract class)&#xff1a; 不能直接实例化&#xff0c;只能被继承。 用来定义一套基础框架和规范&#xff0c;强制子类必须实现某些方法&#xff08;抽象方法&#xff09;。 可用来封装一些共通的逻辑&#xff0c;减少代码重复。 虚方法 (virtual)&#xff1a; …

PowerBi中ALLEXCEPT怎么使用?

在 Power BI 的 DAX 中&#xff0c;ALLEXCEPT() 是一个非常重要的函数&#xff0c;用来实现**“在保留部分筛选条件的前提下&#xff0c;移除其他所有筛选器”**&#xff0c;它常用于 同比、占比、累计汇总 等分析中。 ✅ 一、ALLEXCEPT 是什么意思&#xff1f; 函数全称&…

IQ信号和实信号的关系与转换的matlab实现

IQ信号 IQ信号通常是指两路正交的信号(I路和Q路),在实际信号采样中,通常会进行IQ采样,将实信号转换为复基带信号进行存储。 IQ信号转实信号 IQ信号转为实信号,其实就是将IQ两路正交信号通过上变频合并为一个实数的带通信号,这通常在通信系统中用于将基带信号调制到载…

【锂电池剩余寿命预测】LSTM长短期记忆神经网络锂电池剩余寿命预测(Matlab源码)

目录 效果一览程序获取程序内容代码分享研究内容基于LSTM长短期记忆神经网络的锂电池剩余寿命预测摘要关键词1. 引言1.1 研究背景1.2 研究现状与问题1.3 研究目的与意义2. 文献综述2.1 锂电池剩余寿命预测方法概述2.2 传统预测方法的优势与不足2.3 LSTM在锂电池寿命预测中的应用…

具身智能的理论基础

引言 在人工智能与认知科学快速发展的背景下&#xff0c;“具身智能”&#xff08;Embodied Intelligence&#xff09;这一概念日益受到重视。具身智能是指智能体的认知能力不仅源于其大脑&#xff08;或中央处理单元&#xff09;&#xff0c;更根植于其身体的结构、感官与其所…

【数据结构】励志大厂版·初级(二刷复习)双链表

前引&#xff1a;今天学习的双链表属于链表结构中最复杂的一种&#xff08;带头双向循环链表&#xff09;&#xff0c;按照安排&#xff0c;我们会先进行复习&#xff0c;如何实现双链表&#xff0c;如基本的头插、头删、尾删、尾插&#xff0c;掌握每个细节&#xff0c;随后进…

CSS `display` 属性详解(完整版)

CSS display 属性详解&#xff08;完整版&#xff09; 1. 属性值及特性详解 display 属性控制元素的布局类型和生成的框类型&#xff0c;以下是 所有有效值 及其特性&#xff1a; 1.1 基础类型 值描述布局行为是否生成块级框典型用途block元素独占一行&#xff0c;宽度自动撑…

【数据结构 · 初阶】- 堆的实现

目录 一.初始化 二.插入 三.删除&#xff08;堆顶、根&#xff09; 四.整体代码 Heap.h Test.c Heap.c 我们使用顺序结构实现完全二叉树&#xff0c;也就是堆的实现 以前学的数据结构只是单纯的存储数据。堆除了存储数据&#xff0c;还有其他的价值——排序。是一个功能…

qt.tlsbackend.ossl: Failed to load libssl/libcrypto.

我的环境是windows&#xff0c;QT6.3.2&#xff08;msvc2019_64/mingw_64&#xff09; 出错原因 QT没有正确加载OpenSSL。 解决过程 1、确保安装的有openssl。 文章结尾有个注意&#xff0c;是其他方式安装过openssl&#xff0c;环境变量有&#xff0c;但是QT找不到的问题。…

【Linux】用户权限

shell命令 1. Linux本质上是一个操作系统&#xff0c;但是一般的用户不能直接使用它&#xff0c;而是需要通过外壳程序shell&#xff0c;来与Linux内核进行沟通。 2. shell的简单定义&#xff1a;命令行解释器。主要包含以下作用&#xff1a; 将使用者的命令翻译给核心处理。将…

赛灵思 XC7K325T-2FFG900I FPGA Xilinx Kintex‑7

XC7K325T-2FFG900I 是 Xilinx Kintex‑7 系列中一款工业级 (I) 高性能 FPGA&#xff0c;基于 28 nm HKMG HPL 工艺制程&#xff0c;核心电压标称 1.0 V&#xff0c;I/O 电压可在 0.97 V–1.03 V 之间灵活配置&#xff0c;并可在 –40 C 至 100 C 温度范围内稳定运行。该器件提供…

【题解-Acwing】847. 图中点的层次

题目:847. 图中点的层次 题目描述 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环。 所有边的长度都是 1,点的编号为 1∼n。 请你求出 1 号点到 n 号点的最短距离,如果从 1 号点无法走到 n 号点,输出 −1 。 输入 第一行包含两个整数 n 和 m。 接下来 m 行…

css图片设为灰色

使用filter方式将图片设置为灰色 普通图片使用&#xff1a;filter: saturate(0); 纯白图片使用&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"width…

【Luogu】动态规划一

P5414 [YNOI2019] 排序 - 洛谷 思路&#xff1a; 可以想到对于任意一个需要换位置的数字&#xff0c;我们不可能换两次及以上&#xff0c;那么这题就可以转化为求一个最大和的最长不递减子序列&#xff0c;最后的答案就是众和减去这个最大和 代码&#xff1a; #include <…

什么是管理思维?

管理思维是指在管理活动中形成的系统性、战略性和创造性的思考方式&#xff0c;帮助个人或团队更高效地达成目标。它不仅适用于企业管理&#xff0c;也适用于个人成长、项目执行和复杂问题解决。以下是关于管理思维的核心内容&#xff1a; 一、管理思维的核心特征 1. 系统性思…