LeetCode 1636. 按照频率将数组升序排序(哈希+排序)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个整数数组 nums ,请你将数组按照每个值的频率 升序 排序。
如果有多个值的频率相同,请你按照数值本身将它们 降序 排序。

请你返回排序后的数组。

示例 1:
输入:nums = [1,1,2,2,2,3]
输出:[3,1,1,2,2,2]
解释:'3' 频率为 1'1' 频率为 2'2' 频率为 3 。示例 2:
输入:nums = [2,3,1,3,2]
输出:[1,3,3,2,2]
解释:'2''3' 频率都为 2 ,所以它们之间按照数值本身降序排序。示例 3:
输入:nums = [-1,1,-6,4,5,-6,1,4,1]
输出:[5,-1,4,4,-6,-6,1,1,1]提示:
1 <= nums.length <= 100
-100 <= nums[i] <= 100

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sort-array-by-increasing-frequency
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 哈希计数频率
  • 自定义排序
class Solution {
public:vector<int> frequencySort(vector<int>& nums) {unordered_map<int, int> m;//哈希计数for(auto n : nums)m[n]++;vector<pair<int,int>> arr;for(auto p : m){arr.push_back(p);}sort(arr.begin(), arr.end(),[&](auto a, auto b) {if(a.second == b.second)return a.first > b.first;return a.second < b.second;});vector<int> ans(nums.size());int i = 0, t, number;for(auto p : arr){t = p.second;number = p.first;while(t--)ans[i++] = number;}return ans;}
};

或者简洁写法:

class Solution {
public:vector<int> frequencySort(vector<int>& nums) {unordered_map<int, int> m;for(auto n : nums)m[n]++;sort(nums.begin(), nums.end(),[&](auto a, auto b) {if(m[a] == m[b])return a > b;return m[a] < m[b];});return nums;}
};

16 ms 11.6 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

Ubuntu16.04直接修改root密码

Ubuntu16.04系统中&#xff0c;因为误操作导致管理员密码丢失或无效&#xff0c;并且忘记root密码&#xff0c;此时无法进行任何root/sudo权限操作。可以通过GRUB重新设置root密码&#xff0c;并恢复管理员账户到正常状态。 工具/原料 • Ubuntu16.04操作系统 重置root密码 启…

TaskScheduler相关

目录 1、DAGScheduler与TaskScheduler 2、TaskScheduler与SchedulerBackend 3、任务调度过程总结 1、DAGScheduler与TaskScheduler DAGScheduler面向我们整个Job划分出了Stage&#xff0c;划分了Stage是从后往前划分的&#xff0c;执行的时候是从前往后&#xff0c;每个Stag…

网上支付心案例payment

案例的作用及用法参考该类的说明注释 工具类分别有&#xff1a; package cn.itcast.utils; import java.util.Properties; /** * 读取配置文件 * */ public class ConfigInfo { private static Properties cache new Properties(); static{ try …

LeetCode 1637. 两点之间不包含任何点的最宽垂直面积

文章目录1. 题目2. 解题1. 题目 给你 n 个二维平面上的点 points &#xff0c;其中 points[i] [xi, yi] &#xff0c;请你返回两点之间内部不包含任何点的 最宽垂直面积 的宽度。 垂直面积 的定义是固定宽度&#xff0c;而 y 轴上无限延伸的一块区域&#xff08;也就是高度为…

有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和

原题:有一序列a&#xff0c;大小为n&#xff0c;分为2部分,序列元素的值任意整形数&#xff0c;无序&#xff1b; 要求&#xff1a;通过交换a,b中的元素&#xff0c;使[序列a元素的和]与[序列b元素的和]之间的差最小&#xff0c;用python写。 #codingutf-8 # 1.将两序列合并为一…

Task执行流程

1、源码走读 &#xff08;1&#xff09;当Driver中的SchedulerBackend&#xff08;Standalone模式为CoarseGrainedSchedulerBackend&#xff09;给ExecutorBackend&#xff08;Standalone模式为CoarseGrainedExecutorBackend&#xff09;发送LaunchTask之后&#xff0c;Coarse…

一段挂起进程中所有线程的代码

今天看书核心编程看到第7章&#xff0c;中的一段代码很有意思&#xff0c;win7下对记事本进程进行测试&#xff0c;可以挂起&#xff0c;挺有意思的 //windows核心编程 第5版中的一段代码 /* 函数功能:挂起进程中的所有线程 参数1:进程ID 参数2:若为TRUE时对进程中的所有线程调…

LeetCode 1638. 统计只差一个字符的子串数目(DP)

文章目录1. 题目2. 解题2.1 暴力枚举2.2 DP1. 题目 给你两个字符串 s 和 t &#xff0c;请你找出 s 中的非空子串的数目&#xff0c;这些子串满足替换 一个不同字符 以后&#xff0c;是 t 串的子串。 换言之&#xff0c;请你找到 s 和 t 串中 恰好 只有一个字符不同的子字符串…

Airflow简介

1、什么是Airflow Airflow 是一个 Airbnb 的 Workflow 开源项目&#xff0c;使用Python编写实现的任务管理、调度、监控工作流平台。Airflow 是基于DAG(有向无环图)的任务管理系统&#xff0c;可以简单理解为是高级版的crontab&#xff0c;但是它解决了crontab无法解决的任务…

Flask简介与简单项目操作流程

Flask框架简介Flask诞生于2010年&#xff0c;是Armin ronacher&#xff08;人名&#xff09;用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。它主要面向需求简单的小应用。Flask本身相当于一个内核&#xff0c;其他几乎所有的功能都要用到扩展&#xff08;邮件扩展Fl…

LeetCode 1640. 能否连接形成数组(哈希)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 arr &#xff0c;数组中的每个整数 互不相同 。 另有一个由整数数组构成的数组 pieces&#xff0c;其中的整数也 互不相同 。请你以 任意顺序 连接 pieces 中的数组以形成 arr 。但是&#xff0c;不允许 对每个数组 pieces[i]…

python基本知识、数据库、网络、编程等总结

Python语言特性 1 Python的函数参数传递 看两个例子: a 1 def fun(a):a 2 fun(a) print a # 1 a [] def fun(a):a.append(1) fun(a) print a # [1] 所有的变量都可以理解是内存中一个对象的“引用”&#xff0c;或者&#xff0c;也可以看似c中void*的感觉。 通过id来看引…

Android中的Handler的具体用法

Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。Android利用Handler来实现UI线程的更新的。 Handler是Android中的消息发送器&#xff0c;其在哪个Activity中创建就属于且紧紧属于该Activity。还可以说其在哪个线程中new的&#xff0c;就是那个线程的Handler。…

LeetCode 1641. 统计字典序元音字符串的数目(DP)

文章目录1. 题目2. 解题1. 题目 给你一个整数 n&#xff0c;请返回长度为 n 、仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量。 字符串 s 按 字典序排列 需要满足&#xff1a;对于所有有效的 i&#xff0c;s[i] 在字母表中的位置总是与 s[i1] 相同或在 s[i1] 之…

mysql5.5中的MaxValue关键字

MaxValue是MySQL5.5中的关键字转载于:https://www.cnblogs.com/Neil223/p/3544271.html

python面试总结(二)列表去重与单例

1.Python里面如何实现tuple和list的转换python中&#xff0c;tuple和list均为内置类型&#xff0c; 以list作为参数将tuple类初始化&#xff0c;将返回tuple类型 tuple([1,2,3]) #list转换为tuple 以tuple作为参数将list类初始化&#xff0c;将返回list类型 …

LeetCode 1642. 可以到达的最远建筑(二分查找 / 优先队列贪心)

文章目录1. 题目2. 解题2.1 二分查找2.2 优先队列贪心1. 题目 给你一个整数数组 heights &#xff0c;表示建筑物的高度。另有一些砖块 bricks 和梯子 ladders 。 你从建筑物 0 开始旅程&#xff0c;不断向后面的建筑物移动&#xff0c;期间可能会用到砖块或梯子。 当从建筑…

ClickHouse高可用及副本测试

1 概述 ​ 对于默认的分布式表的配置&#xff0c;每个分片只有一份&#xff0c;这种多分片单副本集群&#xff0c;挂掉一个节点的话查询分布式表会报错。为了解决这个问题的话可以使用ClickHouse高可用集群&#xff0c;对于每个分片具有2个或2个以上的副本&#xff0c;当某个节…

阿里云Redis读写分离典型场景:如何轻松搭建电商秒杀系统

秒杀活动是绝大部分电商选择的低价促销&#xff0c;推广品牌的方式。不仅可以给平台带来用户量&#xff0c;还可以提高平台知名度。一个好的秒杀系统&#xff0c;可以提高平台系统的稳定性和公平性&#xff0c;获得更好的用户体验&#xff0c;提升平台的口碑&#xff0c;从而提…

使用for语句打印图形

public class Print { public static void main(String[] args) { int num11; //打印上半部分 for(int i0;i { for(int jnum;j>i1;j--) { System.out.print(" "); //打印空格 } for(int j0;j<i;j) { System.out.print("* "); } System.out.println()…