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

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

目录

  • 题目
  • 解法

题目

给你一个整数数组 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.kler.cn/news/364516.html

相关文章:

  • 1024是什么日子
  • 【C++】——list 容器的解析与极致实现
  • 基于Multisim的水位测量电路设计与仿真
  • selenium案例——爬取哔哩哔哩排行榜
  • 使用Python和Matplotlib模拟3D海浪动画
  • 链表(虚拟头节点)
  • QML列表视图 ListView的使用
  • Jenkins + GitLab + Docker实现自动化部署(Java项目)
  • 深入了解 Pandas 中的数据:Series 和 DataFrame 的使用指南
  • 借助栈逆置单链表
  • 基于YOLOv8深度学习的高密度人脸智能检测与统计系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测
  • 【golang】学习文档整理
  • OpenFace安装教程及踩坑记录 (Ubuntu20.04—2024.10.24)
  • ElasticSearch全文检索和倒排索引
  • 杂项笔记
  • 100种算法【Python版】第8篇——群体智能优化算法之人工蜂群算法
  • Docker容器的基础镜像:构建现代应用程序的基石
  • PYTHON实现麦克风实时传流语音听写
  • verilog函数和任务
  • 跳表:数据结构中的“快速通道”
  • 内容安全与系统构建加速,助力解决生成式AI时代的双重挑战
  • c# lambda表达式基础语法
  • java基础day04:方法(函数),练习
  • Android原生ROM出现WIFI显示网络连接受限,网络无法连接的问题
  • 一个vue3的待办列表组件
  • 【如何使用git将自己注释不上传到git服务器】