文章目录

  • 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. 适龄的朋友(计数排序+前缀和)相关推荐

  1. leetcode每日一题825. 适龄的朋友 快排+双指针

    本文目录 leetcode每日一题825. 适龄的朋友 快排+双指针 写在前面 题目 示例 提示 思路 代码实现 执行结果 写在后面 leetcode每日一题825. 适龄的朋友 快排+双指针 写在前 ...

  2. 825. 适龄的朋友

    适龄的朋友 在社交媒体网站上有 n 个用户.给你一个整数数组 ages ,其中 ages[i] 是第 i 个用户的年龄. 如果下述任意一个条件为真,那么用户 x 将不会向用户 y(x != y)发送好 ...

  3. 【力扣时间】【825】【中等】适龄的朋友

    适龄的朋友 1.先看题 2.审题 3.思路 4.开工! 5.解读 6.提交 7.大牛们来了 8.总结 额--首先,这道题我是做出来了,只是解法过于简单粗暴,所以参考价值不大. 本着一半是为了将来的我能 ...

  4. 算法与数据结构07:前缀树,计数排序与桶排序

    算法与数据结构07:前缀树,计数排序与桶排序 前缀树 计数排序 桶排序 前缀树 Trie 1.根据字符串数组中,每个字符串的字符作为路径,组成而成的一个多叉树结构 2.每个节点都有一个paths数组, ...

  5. 【算法自由之路】前缀树 桶排序之计数排序和基数排序

    [算法自由之路]前缀树 & 桶排序之计数排序和基数排序 前缀树(字典树) 首先是前缀树,前缀树是由字符构成的树结构,它记录有多少前缀字符通过,以及有多少个同样的字符串,其找这类信息的时间复杂度 ...

  6. 云漫圈 | 计数排序,你真的了解么?

    参加 2018 AI开发者大会,请点击 ↑↑↑ -----  第二天  ----- ------------ 假定20个随机整数的值如下: 9,3,5,4,9,1,2,7,8,1,3,6,5,3,4, ...

  7. 计数排序vs基数排序vs桶排序

    从计数排序说起 计数排序是一种非基于元素比较的排序算法,而是将待排序数组元素转化为计数数组的索引值,从而间接使待排序数组具有顺序性. 计数排序的实现一般有两种形式:基于辅助数组和基于桶排序. 基于辅助 ...

  8. 理论基础 —— 排序 —— 计数排序

    [概述] 计数排序是一种稳定的排序,属于非比较类排序,其基本思想是:对于给定的输入序列中的每一个元素 x,确定该序列中值小于 x 的元素的个数,一旦有了这个信息,就可以将 x 直接存放到最终的输出序列 ...

  9. LeetCode 825 Friends Of Appropriate Ages

    LeetCode 825 Friends Of Appropriate Ages 传送门 题目分析 Some people will make friend requests. The list of ...

最新文章

  1. hadoop job 数量_大数据Hadoop常见面/笔试题
  2. 分组密码简介和五大分组模式
  3. NLP 《隐式马尔科夫链》
  4. delphi 第三方组件 log4cpp.dll
  5. 用POP动画编写带富文本的自定义动画效果
  6. 转 jquery使用技巧小结
  7. 博客V7之后,喜庆排名进入2000之内
  8. Android自适应国际化语言
  9. 第3关:HTML表格:日常消费账单表格展示网页
  10. 绘图板应用讲解计算机,如何用数位板在电脑上画画?5个板绘使用技巧分享!...
  11. 【图神经网络】图神经网络(GNN)学习笔记:图滤波器与图卷积神经网络
  12. 教你免费且快速地搭建个人网站
  13. Counterpoint:2018年第三季度中国手机市场现状与双十一展望
  14. 使用DiskGenius扩展C盘大小,遇见“您选择的分区不支持无损调整容量”
  15. java 从excel中读取数据_java中怎样从Excel中读写数据
  16. php web 登录验证,Web登录Authorization验证
  17. 基于依存句法分析的开放式中文实体关系抽取
  18. 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放
  19. 在前端开发中,页面渲染指什么
  20. 牢骚:各种奇奇怪怪的问题。。。

热门文章

  1. Django中的F对象和Q对象
  2. Downloader Middlewares反反爬虫【学习笔记04】
  3. Django查询 – id vs pk
  4. Hive的基本操作总结
  5. java mapstring_ object 遍历_ListMapString,Object使用Java代码遍历以获取String,Object的值...
  6. python字符串是什么_python字符串详解
  7. 用Visual Studio 2019连接 WSL来编译调试C/C++项目
  8. C语言里if语句变量作为判断条件,C语言教学(九-上)if else判断语句
  9. oracle的env函数用法,env命令_Linux env 命令用法详解:显示系统中已存在的环境变量...
  10. /etc/fstab 参数详解及如何设置开机自动挂载