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

【LeetCode: 912. 排序数组 + 归并排序】

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 归并排序
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 912. 排序数组

⛲ 题目描述

给你一个整数数组 nums,请你将该数组升序排列。

你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 O(nlog(n)),并且空间复杂度尽可能小。

示例 1:

输入:nums = [5,2,3,1]
输出:[1,2,3,5]
示例 2:

输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]

提示:

1 <= nums.length <= 5 * 104
-5 * 104 <= nums[i] <= 5 * 104

🌟 求解思路&实现代码&运行结果


⚡ 归并排序

🥦 求解思路
  1. sortArray(int[] arr): 这是归并排序的入口函数,它检查数组是否为空,如果是则直接返回。否则,创建一个临时数组并调用递归排序函数。
  2. mergeSort(int[] arr, int left, int right, int[] temp): 这是递归排序函数,它将数组分成两半,分别对左半部分和右半部分进行排序,然后调用merge函数将两个有序部分合并。
  3. merge(int[] arr, int left, int mid, int right, int[] temp): 这是合并函数,它将两个有序数组合并成一个有序数组,并将结果存回原数组。
  4. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
class Solution {public int[] sortArray(int[] arr) {if (arr == null || arr.length < 1) {return new int[]{}; // 如果数组为空或只有一个元素,直接返回}int[] temp = new int[arr.length]; // 创建一个临时数组用于合并mergeSort(arr, 0, arr.length - 1, temp);return arr;}// 递归排序函数private static void mergeSort(int[] arr, int left, int right, int[] temp) {if (left < right) {int mid = left + (right - left) / 2; // 找到中间点mergeSort(arr, left, mid, temp); // 对左半部分进行排序mergeSort(arr, mid + 1, right, temp); // 对右半部分进行排序merge(arr, left, mid, right, temp); // 合并两个有序部分}}// 合并两个有序数组private static void merge(int[] arr, int left, int mid, int right, int[] temp) {int i = left; // 左半部分的起始索引int j = mid + 1; // 右半部分的起始索引int k = 0; // 临时数组的起始索引// 将两个有序数组合并到临时数组中while (i <= mid && j <= right) {if (arr[i] <= arr[j]) {temp[k++] = arr[i++];} else {temp[k++] = arr[j++];}}// 将左半部分剩余的元素复制到临时数组中while (i <= mid) {temp[k++] = arr[i++];}// 将右半部分剩余的元素复制到临时数组中while (j <= right) {temp[k++] = arr[j++];}// 将临时数组中的元素复制回原数组k = 0;while (left <= right) {arr[left++] = temp[k++];}}}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

相关文章:

【LeetCode: 912. 排序数组 + 归并排序】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

AI时代来了,我们不再需要IDE了

大家好&#xff0c;我是编程乐趣。 最近在思考一个问题&#xff0c;那就是AI这么强大。 未来有没有可能&#xff0c;我们就不需要不需要开发工具了&#xff0c;只需一个浏览器就可以开发软件了。 一、AI带来的变化 1、代码生成与补全 AI工具如GitHub Copilot等能够根据代码…...

PL/SQL语言的网络编程

PL/SQL语言的网络编程 引言 在信息化迅速发展的今天&#xff0c;网络编程作为现代软件开发的重要组成部分&#xff0c;受到了广泛关注。而在数据库管理系统中&#xff0c;Oracle 提供了 PL/SQL&#xff08;Procedural Language/Structured Query Language&#xff09;&#x…...

vue video重复视频 设置 srcObject 视频流不占用资源 减少资源浪费

// 直接设置srcObject减少获取视频流&#xff1a;通过 captureStream() 方法从下方视频元素获取视频流。 // 设置 srcObject&#xff1a;将获取到的视频流设置为上方视频的 srcObject 减少资源浪费 // 获取到需要复制到的dom元素 const firstVideoElement proxy.$refs.firs…...

JavaFx 21 项目Markdown 预览、编辑、新建、文件树、删除、重命名

项目文件结构 项目的源代码和资源文件存放在以下路径: 源代码: src/main/java/com/kong/markdown/ 包含多个 Java 文件,主要实现了应用的功能: App.java:主类,可能包含应用的启动逻辑。FileService.java:可能与文件操作相关的服务类。MainController.java:控制器类,可…...

git项目提交步骤(简洁版)

1.创建仓库 2.填写 信息 3.点击这个按钮 4.找到要上传的文件&#xff0c;在目录内右键点击 5.依次执行命令 在命令窗口中输入&#xff1a;git init 复制仓库地址&#xff1a; 在命令窗口中输入&#xff1a;git remote add origin 仓库地址 在命令窗口中输入&#xff1a;…...

风水算命系统架构与功能分析

系统架构 服务端&#xff1a;Java&#xff08;最低JDK1.8&#xff0c;支持JDK11以及JDK17&#xff09;数据库&#xff1a;MySQL数据库&#xff08;标配5.7版本&#xff0c;支持MySQL8&#xff09;ORM框架&#xff1a;Mybatis&#xff08;集成通用tk-mapper&#xff0c;支持myb…...

Clojure语言的学习路线

Clojure语言的学习路线 Clojure是一种现代的Lisp方言&#xff0c;运行于Java虚拟机&#xff08;JVM&#xff09;上。它具备强大的函数式编程特性&#xff0c;支持并发和多线程编程&#xff0c;适合处理复杂的数据和计算任务。由于其简洁和灵活的语法&#xff0c;Clojure在数据…...

网络安全核心目标CIA

网络安全的核心目标是为关键资产提供机密性(Confidentiality)、可用性(Availablity)、完整性(Integrity)。作为安全基础架构中的主要的安全目标和宗旨&#xff0c;机密性、可用性、完整性频频出现&#xff0c;被简称为CIA&#xff0c;也被成为你AIC&#xff0c;只是顺序不同而已…...

Wi-Fi Direct (P2P)原理及功能介绍

目录 Wi-Fi Direct &#xff08;P2P&#xff09;介绍Wi-Fi Direct P2P 概述P2P-GO&#xff08;P2P Group Owner&#xff09;工作流程 wifi-Direct使用windows11 wifi-directOpenwrtwifi的concurrent mode Linux环境下的配置工具必联wifi芯片P2P支持REF Wi-Fi Direct &#xff…...

Perl语言的数据结构

Perl语言的数据结构 Perl是一种功能强大的、灵活的脚本语言&#xff0c;广泛用于文本处理、系统管理、网络编程以及许多其他领域。其灵活性不仅体现在语法上&#xff0c;还体现在其丰富的数据结构上。本文将深入探讨Perl的主要数据结构&#xff0c;包括标量、数组、哈希以及引…...

【MFC】设置CTreeCtrl单个节点的文字颜色

问题 功能调整需要依据不同状态设置树控件中单个节点的文字颜色。 分析 1、CTreeCtrl本身有设置文字颜色的接口SetTextColor&#xff0c;但是这个接口是设置树控件整体的文字颜色。 2、在自定义接口可以对树控件单个节点进行更新文字颜色和背景颜色&#xff0c;接收自定义绘制…...

【CSS】设置滚动条样式

文章目录 基本语法用法案例 基本语法 在CSS中&#xff0c;可以使用 ::-webkit-scrollbar 和相关伪元素来为滚动条设置样式&#xff0c;但请注意这些伪元素是非标准的&#xff0c;主要用于WebKit内核浏览器&#xff08;如Chrome、Safari&#xff09;。 ::-webkit-scrollbar CSS …...

Gitlab-Runner配置

原理 Gitlab-Runner是一个非常强大的CI/CD工具。它可以帮助我们自动化执行各种任务&#xff0c;如构建、测试和部署等。Gitlab-Runner和Gitlab通过API通信&#xff0c;接收作业并提交到执行队列&#xff0c;Gitlab-Runner从队列中获取作业&#xff0c;并允许在不同环境下进行作…...

代码随想录 哈希 test 8

18. 四数之和 - 力扣&#xff08;LeetCode&#xff09; 与三数之和类似&#xff0c;重点在剪枝和去重的区别&#xff0c;由于target可正可负&#xff0c;因此需要分两种情况讨论&#xff0c;如果target为正&#xff0c;则若当前选择的元素之和大于target&#xff0c;需要跳出这…...

[SAP ABAP] 使用LOOP AT...ASSIGNING FIELD-SYMBOL 直接更新内表数据

使用 LOOP AT...ASSIGNING FIELD-SYMBOL... 可以直接修改内表中的数据&#xff0c;而不需要先将内表数据复制到相应的工作区&#xff0c;然后再更新回内表中&#xff0c;从而提高性能 针对上述代码进行优化&#xff0c;我们使用LOOP AT...ASSIGNING FIELD-SYMBOL 直接更新内表数…...

MySQL数据导出导入

一、数据导出 1.导出全库备份到本地的目录 mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines--default-character-setutf8 --lock-all-tables --add-drop-database -A >db.all.sql 2.导出指定库到本地的目录(例如mysql库) mysqldump -u$USER -p$PASSWD -h127.…...

leetcode 127. 单词接龙

题目&#xff1a;127. 单词接龙 - 力扣&#xff08;LeetCode&#xff09; 先建立一颗trie树&#xff0c;从beginWord开始bfs&#xff1b;bfs的过程中&#xff0c;对trie树进行dfs寻找“只差一个字母”的其他未遍历到的字符串&#xff1b;直到bfs遍历到endWord。 struct Node …...

如何开发一个支持海量分布式锁的应用库

分布式锁是一种用于控制分布式系统中资源访问的同步机制&#xff0c;确保在任意时刻只有一个客户端能够获取到锁&#xff0c;并对共享资源进行操作。 作用 1.保证数据一致性&#xff1a;在多个节点并发执行的情况下&#xff0c;分布式锁可以防止同时修改同一份数据&#xff0c…...

JavaScript系列(17)--类型系统模拟

JavaScript类型系统模拟 &#x1f3ad; 今天&#xff0c;让我们深入探讨JavaScript中的类型系统模拟。虽然JavaScript是一门动态类型语言&#xff0c;但我们可以通过各种方式来实现类型检查和验证。 类型系统基础 &#x1f31f; &#x1f4a1; 小知识&#xff1a;JavaScript是…...

019、无监督学习:聚类分析与降维技术(K-Means, PCA)

上周排查一个嵌入式设备的内存泄漏问题&#xff0c;dump出来的堆内存数据有十几万条记录&#xff0c;肉眼根本看不出规律。后来把每条内存分配记录抽象成&#xff08;分配大小、存活时间、调用栈哈希&#xff09;三个特征&#xff0c;扔进K-Means里跑了三分钟&#xff0c;五个聚…...

智能邮件助手:OpenClaw+Phi-3-vision-128k-instruct自动解析附件并回复

智能邮件助手&#xff1a;OpenClawPhi-3-vision-128k-instruct自动解析附件并回复 1. 为什么需要智能邮件助手&#xff1f; 每天早晨打开邮箱&#xff0c;看到堆积如山的未读邮件时&#xff0c;那种窒息感我太熟悉了。特别是当邮件里夹杂着各种PDF报价单、产品手册扫描件时&a…...

DeepSeek-R1-Distill-Qwen-1.5B新手入门:从镜像拉取到网页对话完整流程

DeepSeek-R1-Distill-Qwen-1.5B新手入门&#xff1a;从镜像拉取到网页对话完整流程 1. 为什么你需要关注这个“小钢炮”模型 如果你正在寻找一个能在自己电脑上流畅运行&#xff0c;还能帮你解决数学题、写代码、回答问题的AI助手&#xff0c;那么DeepSeek-R1-Distill-Qwen-1…...

Stable-Diffusion-v1-5-archive部署故障排查:端口/服务/日志三步定位法

Stable-Diffusion-v1-5-archive部署故障排查&#xff1a;端口/服务/日志三步定位法 部署 Stable Diffusion v1.5 Archive 镜像后&#xff0c;页面打不开、图片生成失败&#xff0c;是不是让你有点头疼&#xff1f;别急&#xff0c;这通常是服务启动过程中的一些小问题。今天&a…...

OpenClaw教学应用:Qwen3-4B自动批改编程作业实践

OpenClaw教学应用&#xff1a;Qwen3-4B自动批改编程作业实践 1. 为什么需要自动化作业批改&#xff1f; 作为一名计算机课程助教&#xff0c;我每周需要手动批改近百份学生作业。这个过程不仅耗时&#xff0c;还容易因疲劳导致评分标准不一致。最头疼的是基础语法错误检查——…...

sem 广告投放需要注意哪些问题_seo 优化的常见指标有哪些

SEM广告投放需要注意哪些问题 在当今数字营销的时代&#xff0c;SEM&#xff08;搜索引擎营销&#xff09;广告投放已经成为企业提升品牌知名度和销售业绩的重要手段。要想在竞争激烈的市场中脱颖而出&#xff0c;SEM广告投放不仅仅需要精准的定位和合理的预算分配&#xff0c…...

保姆级教程:SAP OMWS+BMA4配置实现批次特定双单位(附钢料行业案例)

SAP批次双单位配置实战&#xff1a;从OMWS到BMA4的钢料行业解决方案 当钢料采购遇上"毛重谜题"——供应商交货时才能确认实际重量&#xff0c;传统双单位配置瞬间失效。这个困扰某制造企业数月的难题&#xff0c;最终通过SAP批次特定计量单位功能得以破解。本文将手把…...

FFmpeg 新手必学:5个实用命令搞定视频转码、剪辑与音频提取

FFmpeg 新手必学&#xff1a;5个实用命令搞定视频转码、剪辑与音频提取 第一次接触FFmpeg时&#xff0c;我被这个开源工具的强大功能震撼到了——它几乎能处理所有常见的多媒体格式转换和编辑需求&#xff0c;而且完全免费。作为一款跨平台的命令行工具&#xff0c;FFmpeg在专业…...

揭秘MiniMax-Remover:如何通过两阶段优化实现视频物体移除的高效与精准

1. MiniMax-Remover&#xff1a;视频编辑领域的"魔法橡皮擦" 想象一下&#xff0c;你刚拍完一段完美的旅行vlog&#xff0c;却发现画面角落有个碍眼的垃圾桶&#xff1b;或者你下载了一段珍贵的纪录片&#xff0c;却被平台水印破坏了观影体验。传统视频编辑软件处理这…...

低空智联网:构建未来空中信息高速公路的架构蓝图

1. 低空智联网&#xff1a;重新定义空中信息高速公路 想象一下这样的场景&#xff1a;数百架无人机在城市上空有序穿梭&#xff0c;有的在配送快递&#xff0c;有的在监测空气质量&#xff0c;还有的在执行紧急救援任务。它们彼此之间能够实时通信&#xff0c;自动避让&#xf…...