912.排序数组(计数排序)

news/2024/10/25 18:28:50/

目录

  • 题目
  • 解法

题目

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

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

解法

class Solution {
public:vector<int> sortArray(vector<int>& nums) {// CountSort 计数排序int n = nums.size();int minNum = INT_MAX, maxNum = INT_MIN;// 找到数组中的最小和最大元素for (int i = 0; i < n; ++i) {if (nums[i] < minNum) minNum = nums[i];if (nums[i] > maxNum) maxNum = nums[i];}// 构造计数数组vector<int> counts(maxNum - minNum + 1, 0);for (int i = 0; i < n; ++i) {++counts[nums[i] - minNum];}// 计数排序int index = 0;for (int i = 0; i < counts.size(); ++i) {while (counts[i] != 0) {nums[index++] = i + minNum;counts[i]--;}}return nums;}
};

http://www.ppmy.cn/news/1541895.html

相关文章

构建安全基石:网络安全等级保护定级指南

在数字化时代&#xff0c;网络安全已成为企业与个人不可忽视的重要课题。网络安全等级保护定级指南&#xff0c;作为国家指导网络安全保护的重要文件&#xff0c;为各类机构提供了精准的安全防护蓝图。本文旨在深度解析网络安全等级保护定级指南的精髓&#xff0c;助力建构全面…

PHP依赖注入的原理

PHP中的依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是一种设计模式&#xff0c;旨在解耦和管理对象之间的依赖关系&#xff0c;使得代码更加灵活、可测试和可维护。其原理及关键要点如下&#xff1a; 一、原理 依赖注入的原理是通过外部传递依赖…

vivado 接口带宽验证

存储器接口 使用赛灵思存储器 IP 时需要更多的 I/O 管脚分配步骤。自定义 IP 之后&#xff0c;您可采用 Vivado IDE 中的细化 (elaborated) 或综 合 (synthesized) 设计分配顶层 IP 端口到物理封装引脚。同每一个存储器 IP 关联的所有端口都被纳入一个 I/O 端口接口…

教育平台的创新实现:Spring Boot技术

6系统测试 6.1概念和意义 测试的定义&#xff1a;程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为&#xff1a; 目的&#xff1a;发现程序的错误&#xff1b; 任务&#xff1a;通过在计算机上执行程序&#xff0c;暴露程序中潜在的错误。 另一个…

Pandas 文件读取与保存指南:高效处理 CSV、Excel 等多种格式数据

Pandas 文件读取与保存指南&#xff1a;高效处理 CSV、Excel 等多种格式数据 本文详细介绍了如何使用 Pandas 的 IO 工具从各种常见文件格式&#xff08;如 CSV、Excel、HTML、TXT 等&#xff09;中读取和保存数据。通过 Pandas&#xff0c;用户可以轻松读取和修改数据&#x…

拴柱说Mac之Mac的高效使用技巧第二期

Mac的触控板想必大家都会使用&#xff0c;比如三指拖移窗口&#xff0c;四指切换桌面&#xff0c;触控板能做到的其实更多&#xff0c;今天的高效使用技巧讲的就是触控板&#xff0c;如何才能让你的触控板更加的好用 第一步&#xff0c;官网下载BetterAndBetter 第二步&#…

边缘计算网关在储能领域的应用-天拓四方

随着全球能源结构的转型和智能电网的快速发展&#xff0c;储能技术已成为推动能源革命的关键技术之一。在储能系统中&#xff0c;边缘计算网关作为一种新型的网络设备&#xff0c;发挥着至关重要的作用。 一、边缘计算网关在储能领域的应用 1、实时监控与控制 储能系统是一个…

Ubuntu 设置mysql远程访问

Ubuntu 设置mysql远程访问 在Ubuntu上设置MySQL以允许远程访问&#xff0c;请按照以下步骤操作&#xff1a; 打开终端。 登录到MySQL服务。mysql -u root -p 输入密码。 创建允许远程访问的用户或更新现有用户。 CREATE USER username% IDENTIFIED BY password; 或者如果用…