牛客NC222 插入区间【中等 数组,区间合并问题 Java/Go/PHP/C++】lintcode30 插入区间

题目

在这里插入图片描述
题目链接:
https://www.nowcoder.com/practice/1d784b5472ab4dde88ea2331d16ee909
https://www.lintcode.com/problem/30/solution/56586

思路

在这里插入图片描述

Java代码

import java.util.*;/** public class Interval {*   int start;*   int end;*   public Interval(int start, int end) {*     this.start = start;*     this.end = end;*   }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param Intervals Interval类一维数组 * @param newInterval Interval类 * @return Interval类一维数组*/public Interval[] insertInterval (Interval[] arr, Interval obj) {//这种题,直接看答案,梳理思路就行,多练就会了//https://blog.csdn.net/bao_14440/article/details/132548294int i=0;List<Interval> merged = new ArrayList<>();//添加区间最大值小于newInterval的开始位置while (i<arr.length && arr[i].end<obj.start ){merged.add(arr[i]);i++;}//合并区间while (i<arr.length && arr[i].start <=obj.end){obj.start=Math.min(arr[i].start,obj.start);obj.end = Math.max(arr[i].end,obj.end);i++;}merged.add(obj);//添加剩下的区间到merged列表中while (i<arr.length){merged.add(arr[i]);i++;}return merged.toArray(new Interval[merged.size()]);}
}

Go代码

package mainimport . "nc_tools"/** type Interval struct {*   Start int*   End int* }*//*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param Intervals Interval类一维数组* @param newInterval Interval类* @return Interval类一维数组*/
func insertInterval(Intervals []*Interval, newInterval *Interval) []*Interval {//这种题,直接看答案,梳理思路就行,多练就会了//https://blog.csdn.net/bao_14440/article/details/132548294merged := []*Interval{}idx := 0//找到插入区间的起始位置,最大值要小于newInterval的开始位置for idx < len(Intervals) && Intervals[idx].End < newInterval.Start {merged = append(merged, Intervals[idx])idx++}//合并区间for idx < len(Intervals) && Intervals[idx].Start <= newInterval.End {curstart := newInterval.Startcurend := newInterval.Endif Intervals[idx].Start < curstart {newInterval.Start = Intervals[idx].Start}if Intervals[idx].End > curend {newInterval.End = Intervals[idx].End}idx++}merged = append(merged, newInterval)//继续添加后面的区间for idx < len(Intervals) {merged = append(merged, Intervals[idx])idx++}return merged
}

PHP代码

<?php/*class Interval{var $start = 0;var $end = 0;function __construct($a, $b){$this->start = $a;$this->end = $b;}
}*//*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param Intervals Interval类一维数组 * @param newInterval Interval类 * @return Interval类一维数组*/
function insertInterval( $Intervals ,  $newInterval )
{//这种题,直接看答案,梳理思路就行,多练就会了//https://blog.csdn.net/bao_14440/article/details/132548294$merged = [];$idx =0;//找到插入位置起点,起点前面的最大值要小于$newInterval的startwhile ($idx < count($Intervals) && $Intervals[$idx]->end < $newInterval->start) {$merged[count($merged)] = $Intervals[$idx];$idx++;}//合并区间while ($idx<count($Intervals) && $Intervals[$idx]->start <= $newInterval->end){$curstart = $newInterval->start;$curend = $newInterval->end;if($curstart > $Intervals[$idx]->start){$newInterval->start = $Intervals[$idx]->start;}if($curend < $Intervals[$idx]->end){$newInterval->end = $Intervals[$idx]->end;}$idx++;}$merged[count($merged)] = $newInterval;//继续添加剩下的区间到结果中while ($idx<count($Intervals)){$merged[count($merged)] = $Intervals[$idx];$idx++;}return $merged;
}

C++代码

/*** struct Interval {*  int start;*  int end;*  Interval(int s, int e) : start(start), end(e) {}* };*/
class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param Intervals Interval类vector* @param newInterval Interval类* @return Interval类vector*/vector<Interval> insertInterval(vector<Interval>& Intervals,Interval newInterval) {//这种题,直接看答案,梳理思路就行,多练就会了//https://blog.csdn.net/bao_14440/article/details/132548294vector<Interval> merged;int i=0;//找到插入区间的位置,最大值要小于newInterval的startwhile (i<Intervals.size()&& Intervals[i].end< newInterval.start){merged.push_back(Intervals[i++]);}//合并区间while (i<Intervals.size() && Intervals[i].start<=newInterval.end){int curstart = newInterval.start;int curend = newInterval.end;if(curstart > Intervals[i].start){newInterval.start = Intervals[i].start;}if(curend < Intervals[i].end){newInterval.end = Intervals[i].end;}i++;}merged.push_back(newInterval);//继续添加后面的区间while (i<Intervals.size()){merged.push_back(Intervals[i++]);}return merged;}
};

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

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

相关文章

Julia编程08:控制流Control Flow

Julia provides a variety of control flow constructs: Compound Expressions: begin and ;. Conditional Evaluation: if-elseif-else and ?: (ternary operator). Short-Circuit Evaluation: logical operators && (“and”) and || (“or”), and also chained …

【代码随想录训练营】【Day 32】【回溯-6】【待二刷】| Leetcode 332, 51, 37

【代码随想录训练营】【Day 32】【回溯-6】【待二刷】| Leetcode 332, 51, 37 需强化知识点 滑动窗口&#xff0c;固定结束位置版本螺旋数组&#xff0c;建模为编程问题 题目 332. 重新安排行程 sort reverse的用法&#xff0c;以及result.append(airport)的理解 from co…

i2c总线介绍

1. 简介 1.1 I2C总线的历史背景 I2C&#xff08;Inter-Integrated Circuit&#xff09;总线最初由Philips Semiconductors&#xff08;现NXP Semiconductors&#xff09;在1980年代开发&#xff0c;旨在简化集成电路之间的通信。随着技术的发展&#xff0c;I2C已经成为一种广…

【数据结构】哈希表的原理及其实现

文章目录 哈希表的概念哈希函数的设计常见的哈希函数 哈希冲突1. 闭散列代码实现 2. 开散列拉链法的优点 针对开散列哈希的扩展基于开散列拉链法封装哈希表MyHash.h 基于哈希表实现unordered_map类Myunordered_map.h 基于哈希表实现unordered_set类Myunordered_map.h 哈希表的概…

匠心独运的掺Si量子势垒策略,显著提升了AlGaN基深紫外LED出光率

WHU团队凭借匠心独运的三明治式掺Si量子势垒策略&#xff0c;显著提升了AlGaN基深紫外光LED的效率&#xff0c;这一创新成果为中国武汉大学的研究团队所取得。他们巧妙地设计出一种三明治状Si掺杂&#xff08;未掺杂&#xff09;方案&#xff0c;应用于Al0.6Ga0.4N量子势垒中&a…

WSL安装CentOS系统

1.首选找一个linux系统&#xff0c;执行docker命令 docker run -it --rm centos:7 bash 2.开一个新窗口&#xff0c;将系统导出 docker export e0ee25406703 -o centos.tar 3.切换到wsl命令&#xff0c;导入tar包 wsl --import centos D:\wsl\centos D:\wsl\centos.tar cen…

llvm实践日志(1)---安装llvm

参考了官方教程&#xff1a;Getting Started with the LLVM System — LLVM 19.0.0git documentation 首先从github拷贝一份源码&#xff0c;使用了官方推荐的方法&#xff1a; git clone --depth 1 https://github.com/llvm/llvm-project.git 我的系统是ubuntu22&#xff0…

人工智能安全方面存在哪些问题

人工智能的安全方面存在多个问题&#xff0c;这些问题可以归纳为以下几个方面&#xff1a; 一、网络安全问题 数据泄露风险&#xff1a;人工智能系统依赖于大量数据进行学习和推理&#xff0c;这些数据可能包含敏感信息&#xff0c;如用户隐私、商业机密等。如果系统存在安全…

Java面试题: 解释一下Java中的Happens-Before规则。

Java中的Happens-Before规则是Java内存模型&#xff08;Java Memory Model, JMM&#xff09;的核心概念之一&#xff0c;它定义了多线程环境中操作之间的内存可见性关系。这些规则确保了在并发执行的线程之间&#xff0c;对共享数据的访问能够保持正确的顺序和可见性。 Happen…

3. CSS的色彩与背景

3.1 CSS3中的色彩 CSS3扩展了颜色的定义方式&#xff0c;使得开发者能够使用更多样化和灵活的颜色表达方式。这包括RGB、RGBA、HSL、HSLA等格式&#xff0c;以及支持透明度和渐变的特性。 3.1.1 颜色格式 十六进制颜色 十六进制颜色是最常用的颜色表示法&#xff0c;以#开头…

queue学习

std::queue 类是一种容器适配器&#xff0c;它提供队列的功能——尤其是 FIFO&#xff08;先进先出&#xff09;数据结构。此类模板用处为底层容器的包装器——只提供特定的函数集合。queue 在底层容器尾端推入元素&#xff0c;从首端弹出元素。 元素访问 front 访问第一个元素…

20240526每日后端---------分享一些开发必备网站

代码开发工具: https://www.matools.com/ 前端开发网站&#xff1a; https://ui.bqrdh.com/#google_vignette 后端开发网站&#xff1a; https://javaguide.cn/ 设计模式分析&#xff1a; https://refactoringguru.cn/design-patterns/catalog

Elastic Cloud 将 Elasticsearch 向量数据库优化配置文件添加到 Microsoft Azure

作者&#xff1a;来自 Elastic Serena Chou, Jeff Vestal, Yuvraj Gupta 今天&#xff0c;我们很高兴地宣布&#xff0c;我们的 Elastic Cloud Vector Search 优化硬件配置文件现已可供 Elastic Cloud on Microsoft Azure 用户使用。 此硬件配置文件针对使用 Elasticsearch 作…

web如何做接口层面自动化测试?

接口层面约等于集成化测试&#xff0c;且需要启动web容器 一般web项目的&#xff0c;代码都是按照分层开发的&#xff0c;业务主要是集中在service和dao层&#xff0c;而我们如果仅仅是利用之前的单元测试,然后把依赖的代码直接mock掉&#xff0c;仅仅测试controller这一块是没…

国内github镜像站点

以下几个国内的GitHub镜像站点来提高访问速度&#xff1a; 1. kgithub.com&#xff1a;您可以将GitHub源网址前面加k来使用&#xff0c;例如将https://github.com/username/repo.git改为https://kgithub.com/username/repo.git。这个镜像站点允许查看代码、Issue和评论&#x…

ICP算法的具体计算流程

ICP算法的具体计算流程 初始对齐&#xff1a; 输入&#xff1a;两组点云&#xff0c;源点云和目标点云。初始化&#xff1a;选择一个初始的对齐变换&#xff0c;通常是单位矩阵&#xff08;表示没有初始变换&#xff09;。 迭代过程&#xff1a; 步骤1&#xff1a;最近点查找&a…

数据库SQL语言实战(十)(最后一篇)

目录 前言 练习题 实验八 实验九 题目一 题目二 总结 前言 本篇练习题的重点有两个&#xff1a; 一、测试提交commit和回滚rollback的作用,了解锁等待、授权等知识。 二、学会复制表结构、学会插入数据&#xff0c;特别是学会如何避免重复插入&#xff0c;也就是如何避…

ASP.NET MVC 快速入门(图文版)

今年是2024年了&#xff0c;没有多少人在ASP.NET 去做开发&#xff0c;都使用ABP框架 &#xff0c;不过我们仍然需要了解ASP.NET MVC 的一个开发流程 MVC概述 MVC是当前比较流行的WEB程序开发模式之一&#xff0c;ASP.NET MVC是.Net对MVC的一种实现。MVC&#xff08;Model View…

vue全局修改设置滚动条样式

vue全局修改设置滚动条样式 具体代码&#xff1a; ::-webkit-scrollbar{ /*滚动条整体样式*/width: 6px; /*高宽分别对应横竖滚动条的尺寸*/height: 1px; } ::-webkit-scrollbar-thumb{ /*滚动条里面小方块*/border-radius: 5px;background: #cfcbcb; } ::-webkit-scrollbar-…

websocket的使用及建立连接

1. websocket 1.客户端与服务端建连接2.客户端向服务端发送消息3.服务端在接受消息后以“response-接受的消息内容“的形式返回给客户端4.当服务端收到第5条信息的时候&#xff0c;主动关闭与客户端的连接 客户端代码 ​private void clientWebSocket(String url) {OkHttpClie…