LeetCode 825. 适龄的朋友(计数排序+前缀和)
文章目录
- 1. 题目
- 2. 解题
1. 题目
人们会互相发送好友请求,现在给定一个包含有他们年龄的数组,ages[i] 表示第 i 个人的年龄。
当满足以下任一条件时,A 不能给 B(A、B不为同一人)发送好友请求:
age[B] <= 0.5 * age[A] + 7
age[B] > age[A]
age[B] > 100 && age[A] < 100
否则,A 可以给 B 发送好友请求。
注意如果 A 向 B 发出了请求,不等于 B 也一定会向 A 发出请求。
而且,人们不会给自己发送好友请求。
求总共会发出多少份好友请求?
示例 1:
输入:[16,16]
输出:2
解释:二人可以互发好友申请。示例 2:
输入:[16,17,18]
输出:2
解释:好友请求可产生于 17 -> 16, 18 -> 17.示例 3:
输入:[20,30,100,110,120]
输出:3
解释:好友请求可产生于 110 -> 100, 120 -> 110, 120 -> 100.提示:
1 <= ages.length <= 20000.
1 <= ages[i] <= 120.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/friends-of-appropriate-ages
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 根据条件,只有从15岁开始才可以发送申请
- 先计数排序,并计算前缀人数和
- 每个年龄段的人分成两部分:给自己小的年龄的人发,同龄人互发
class Solution {public:int numFriendRequests(vector<int>& ages) {vector<int> age(121, 0);//每个年龄有多少人for(auto a : ages) age[a]++;vector<int> sum(121,0);for(int i = 1; i <= 120; i++){sum[i] += sum[i-1]+age[i];// 前缀人数和}int ans = 0, l, r;for(int i = 15; i <= 120; i++){l = i/2 + 7;r = i;ans += (sum[r-1]-sum[l])*age[i]+age[i]*(age[i]-1);// 年龄小于当前的,满足条件的人* 每人都可以发// + 当前同龄里的人,互相发,排列 An2}return ans;}
};
84 ms 28.6 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode 825. 适龄的朋友(计数排序+前缀和)相关推荐
- leetcode每日一题825. 适龄的朋友 快排+双指针
本文目录 leetcode每日一题825. 适龄的朋友 快排+双指针 写在前面 题目 示例 提示 思路 代码实现 执行结果 写在后面 leetcode每日一题825. 适龄的朋友 快排+双指针 写在前 ...
- 825. 适龄的朋友
适龄的朋友 在社交媒体网站上有 n 个用户.给你一个整数数组 ages ,其中 ages[i] 是第 i 个用户的年龄. 如果下述任意一个条件为真,那么用户 x 将不会向用户 y(x != y)发送好 ...
- 【力扣时间】【825】【中等】适龄的朋友
适龄的朋友 1.先看题 2.审题 3.思路 4.开工! 5.解读 6.提交 7.大牛们来了 8.总结 额--首先,这道题我是做出来了,只是解法过于简单粗暴,所以参考价值不大. 本着一半是为了将来的我能 ...
- 算法与数据结构07:前缀树,计数排序与桶排序
算法与数据结构07:前缀树,计数排序与桶排序 前缀树 计数排序 桶排序 前缀树 Trie 1.根据字符串数组中,每个字符串的字符作为路径,组成而成的一个多叉树结构 2.每个节点都有一个paths数组, ...
- 【算法自由之路】前缀树 桶排序之计数排序和基数排序
[算法自由之路]前缀树 & 桶排序之计数排序和基数排序 前缀树(字典树) 首先是前缀树,前缀树是由字符构成的树结构,它记录有多少前缀字符通过,以及有多少个同样的字符串,其找这类信息的时间复杂度 ...
- 云漫圈 | 计数排序,你真的了解么?
参加 2018 AI开发者大会,请点击 ↑↑↑ ----- 第二天 ----- ------------ 假定20个随机整数的值如下: 9,3,5,4,9,1,2,7,8,1,3,6,5,3,4, ...
- 计数排序vs基数排序vs桶排序
从计数排序说起 计数排序是一种非基于元素比较的排序算法,而是将待排序数组元素转化为计数数组的索引值,从而间接使待排序数组具有顺序性. 计数排序的实现一般有两种形式:基于辅助数组和基于桶排序. 基于辅助 ...
- 理论基础 —— 排序 —— 计数排序
[概述] 计数排序是一种稳定的排序,属于非比较类排序,其基本思想是:对于给定的输入序列中的每一个元素 x,确定该序列中值小于 x 的元素的个数,一旦有了这个信息,就可以将 x 直接存放到最终的输出序列 ...
- LeetCode 825 Friends Of Appropriate Ages
LeetCode 825 Friends Of Appropriate Ages 传送门 题目分析 Some people will make friend requests. The list of ...
最新文章
- hadoop job 数量_大数据Hadoop常见面/笔试题
- 分组密码简介和五大分组模式
- NLP 《隐式马尔科夫链》
- delphi 第三方组件 log4cpp.dll
- 用POP动画编写带富文本的自定义动画效果
- 转 jquery使用技巧小结
- 博客V7之后,喜庆排名进入2000之内
- Android自适应国际化语言
- 第3关:HTML表格:日常消费账单表格展示网页
- 绘图板应用讲解计算机,如何用数位板在电脑上画画?5个板绘使用技巧分享!...
- 【图神经网络】图神经网络(GNN)学习笔记:图滤波器与图卷积神经网络
- 教你免费且快速地搭建个人网站
- Counterpoint:2018年第三季度中国手机市场现状与双十一展望
- 使用DiskGenius扩展C盘大小,遇见“您选择的分区不支持无损调整容量”
- java 从excel中读取数据_java中怎样从Excel中读写数据
- php web 登录验证,Web登录Authorization验证
- 基于依存句法分析的开放式中文实体关系抽取
- 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放
- 在前端开发中,页面渲染指什么
- 牢骚:各种奇奇怪怪的问题。。。
热门文章
- Django中的F对象和Q对象
- Downloader Middlewares反反爬虫【学习笔记04】
- Django查询 – id vs pk
- Hive的基本操作总结
- java mapstring_ object 遍历_ListMapString,Object使用Java代码遍历以获取String,Object的值...
- python字符串是什么_python字符串详解
- 用Visual Studio 2019连接 WSL来编译调试C/C++项目
- C语言里if语句变量作为判断条件,C语言教学(九-上)if else判断语句
- oracle的env函数用法,env命令_Linux env 命令用法详解:显示系统中已存在的环境变量...
- /etc/fstab 参数详解及如何设置开机自动挂载