LeetCode 之算法篇(1)——排序

本篇文章做leetcode的一些内容总结

文章目录

    • 题目
      • 合并区间
      • 轮转数组

题目

合并区间

解题思路:先排序后遍历
1、首先,按照区间的起始位置对所有区间进行排序。
2、接着,遍历排序后的区间,依次合并重叠的区间。具体做法是比较当前区间的起始位置和上一个合并后区间的结束位置,如果发现有重叠,则合并;否则,将当前区间加入结果集。
3、最终得到的结果集即为合并后的不重叠区间数组。

/*** @param {number[][]} intervals* @return {number[][]}*/
var merge = function(intervals) {if (!intervals || intervals.length === 0) {return [];}// 按照区间的起始位置进行排序intervals.sort((a, b) => a[0] - b[0]);const merged = [intervals[0]];for (let i = 1; i < intervals.length; i++) {const currentInterval = intervals[i];const lastMerged = merged[merged.length - 1];// 如果有重叠,则合并区间if (currentInterval[0] <= lastMerged[1]) {lastMerged[1] = Math.max(lastMerged[1], currentInterval[1]);} else {// 否则,将当前区间加入结果集merged.push(currentInterval);}}return merged;
};

轮转数组

/*** @param {number[]} nums* @param {number} k* @return {void} Do not return anything, modify nums in-place instead.*/
function rotate(nums, k) {const n = nums.length;k %= n;  // 处理 k 大于数组长度的情况// 整体反转reverse(nums, 0, n - 1);// 前 k 个元素反转reverse(nums, 0, k - 1);// 后 n-k 个元素反转reverse(nums, k, n - 1);
}// 反转数组的指定区间
function reverse(nums, start, end) {while (start < end) {const temp = nums[start];nums[start] = nums[end];nums[end] = temp;start++;end--;}
}

将数组元素向右轮转 k 个位置的思路是通过反转数组的不同部分来实现的。这种思路的来源可以追溯到翻转字符串的问题,其中我们也会使用类似的方法。

反转数组的思路:

1、整体反转: 先将整个数组进行反转,这样原来数组的末尾元素就变成了开头。
2、部分反转: 接着,对前 k 个元素进行反转,这样原来数组的开头 k 个元素就变成了末尾。
3、再次部分反转: 最后,对剩余的 n-k 个元素进行反转,将它们恢复到正确的顺序。
这样整个过程就相当于是将数组的元素向右轮转了 k 个位置。

为什么是执行三次反转呢?

在这里,执行三次反转是为了保持反转的方向,确保数组的元素正确地向右轮转 k 个位置。具体来说:

1、整体反转是为了将原数组的末尾元素移动到数组的开头。
2、第一次部分反转是为了将这些位于开头的元素移动到正确的末尾位置。
3、第二次部分反转是为了将原来的开头元素恢复到数组的正确位置。

这种思路的直观性在于,通过反转数组的不同部分,可以有效地实现循环移动的效果。这种方法在处理数组旋转等问题时非常常见。

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

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

相关文章

2021年AI将改变制造业的6大应用趋势

来源&#xff1a;先进制造业▍一、用于缺陷检测的深度学习在制造中&#xff0c;生产线中的缺陷检测过程变得越来越智能。深度神经网络集成使计算机系统可以识别诸如刮擦&#xff0c;裂纹&#xff0c;泄漏等表面缺陷。通过应用图像分类&#xff0c;对象检测和实例分割算法&#…

RequestMapping注解的继承问题

RequestMapping注解被用来注明访问路径&#xff0c;例如: RequestMapping("/data") RequestMapping("/user/list") 在写代码的时候遇到了there is already xxxx been method的错误&#xff0c;显示之前已经被注入&#xff0c;发现是父类中有相同的Reque…

神经科学家为视力受损的人研发新技术

来源&#xff1a;IEEE电气电子工程师作者&#xff1a;Megan Scudellari有许多可穿戴和便携式设备&#xff0c;旨在改善盲人和视力受损者的生活&#xff08;在某些情况下&#xff0c;甚至恢复视力&#xff09;。这些装置已经被开发用于身体的几乎每个部位&#xff1a;手指、手腕…

用机器指令和汇编指令编程(修改版)

实验名称 用机器指令和汇编指令编程(1)实验日期 2018.10.22 学院&#xff1a;计软院 专业&#xff1a;计算机科学与技术 年级&#xff1a;2017级班次&#xff1a;5班 姓名&#xff1a;陈奕明 学号 20171308194一、实验目的 1. 掌握使用debug工具编写和调试汇编命令的方…

Leetcode--763. 划分字母区间

字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。 示例 1&#xff1a;输入&#xff1a;S "ababcbacadefegdehijhklij" 输出&#xff1a;[9,7,8] 解释&a…

学术交流丨魏子卿院士:北斗坐标系

来源&#xff1a;微信公众号中国测绘学会引文格式&#xff1a;魏子卿, 吴富梅, 刘光明. 北斗坐标系[J]. 测绘学报&#xff0c;2019&#xff0c;48(7)&#xff1a;805-809. DOI: 10.11947/j.AGCS.2019.20190131第一作者&#xff1a;魏子卿&#xff08;中国工程院院士&#xff0c…

【原创】论码农的财富修养

《喜剧之王》里看到了演员的自我修养&#xff0c;然后想聊下码农的财富修养&#xff0c;这里不是聊理财&#xff0c;更多是保险Insurance&#xff1b;保险是什么&#xff0c;是一种通过支付少量的保险费用来应对未知风险的机制&#xff0c;比如车险、财险、健康险等&#xff1b…

centos 安装MySQL报错You could try using --skip-broken to work around the problem You could try running:

centos 安装MySQL报错You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum …

Java中序列化的好处及意义

1、序列化是干什么的&#xff1f;简单说就是为了保存在内存中的各种对象的状态&#xff0c;并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存Object States&#xff0c; 但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。2…

​马斯克的全球上网计划:月费646元,网速可达200Mbps

SpaceX创始人兼首席执行官埃隆马斯克来源&#xff1a;腾讯科技审校作者&#xff1a;金鹿腾讯科技讯 4月16日消息&#xff0c;美国太空探索技术公司SpaceX在六个月前向公众推出了Starlink Early Access计划。在最初的几个月里&#xff0c;这项卫星互联网服务的用户增长到了1万多…

剑指 Offer 68 - II. (二叉树)二叉树的最近公共祖先

题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以…

从狼群智能到无人机群协同决策

来源&#xff1a;飞思实验室文&#xff1a;小翼生物群集行为是自然界存在的一种普遍现象 ,先前的研究已表明人们可以通过模仿鸟群、鱼群、蜂群等行为, 研究其群体性决策机制, 进而用于构建集群系统的决策系统框架. 狼群在认知、分工, 以及复杂环境适应性等方面具有突出的优势, …

解决问题 com.alibaba.fastjson.JSONObject cannot be cast to xxx

{"msg": "success","code": "success","data": [{"create_time": "2020-11-09 11:54:08","exec_status": "正常","host_id": 1527414,"id": 3136268,"ip…

CSS常用样式

边框 http://www.w3school.com.cn/cssref/pr_border.asp p {border:5px solid red; } 可以按顺序设置如下属性&#xff1a; border-width border-style border-colorobject.style.border"3px solid blue"边框阴影(CSS3 ) http://www.w3school.com.cn/cssref/pr_box-s…

华为自动驾驶实车实路测试视频曝光!

来源&#xff1a;量子位、物联网智库等自动驾驶的风又刮起来了&#xff0c;这次处在风暴中心的是华为。4月15日&#xff0c;消息称配备华为自动驾驶技术的北汽新能源极狐阿尔法S的HI版车型在上海进行了公开试乘&#xff0c;这也是华为自动驾驶技术公开试乘的全球首秀。就试乘效…

Leetcode--450. 删除二叉搜索树中的节点

给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可分为两个步骤&#xff1a; 首先…

未来智能:人有人用,机有机用

来源&#xff1a; 苇草智酷作者&#xff1a;王飞跃当今最好的人工智能程序到底有多智能&#xff1f;它们是如何工作的&#xff1f;能做些什么&#xff1f;我们有必要担心机器比人类聪明且将很快夺取我们的工作吗&#xff1f;以上这些问题都颇受人们的关注&#xff0c;梅拉妮米歇…

Leetcode--329. 矩阵中的最长递增路径

给定一个整数矩阵&#xff0c;找出最长递增路径的长度。 对于每个单元格&#xff0c;你可以往上&#xff0c;下&#xff0c;左&#xff0c;右四个方向移动。 你不能在对角线方向上移动或移动到边界外&#xff08;即不允许环绕&#xff09;。 示例 1: 输入: nums [ [9,9,…

排序及查找----[(冒泡,快速)(拉格朗日,二分)]

代码展示: 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Text;5 using System.Threading.Tasks;6 7 namespace paixu8 {9 class Program10 {11 static void Main()12 {13 int[] Array { 1, 45…

因果作用推断、因果网络学习及其他

来源&#xff1a;久章智能 未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;云脑研究计划&#xff0c;构建互联网&#xff08;城市&#xff09;云脑技术和企业图谱…