个人网站作业,济南建站软件,wordpress照片分类,网站自助建站系统文章目录1. 题目2. 解题1. 题目
人们会互相发送好友请求#xff0c;现在给定一个包含有他们年龄的数组#xff0c;ages[i] 表示第 i 个人的年龄。
当满足以下任一条件时#xff0c;A 不能给 B#xff08;A、B不为同一人#xff09;发送好友请求#xff1a;
age[B] 现在给定一个包含有他们年龄的数组ages[i] 表示第 i 个人的年龄。
当满足以下任一条件时A 不能给 BA、B不为同一人发送好友请求
age[B] 0.5 * age[A] 7age[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(vectorint ages) {vectorint age(121, 0);//每个年龄有多少人for(auto a : ages) age[a];vectorint 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阿明一起加油、一起学习进步