资讯专栏INFORMATION COLUMN

[LeetCode] 825. Friends Of Appropriate Ages

miya / 2886人阅读

Problem

Some people will make friend requests. The list of their ages is given and ages[i] is the age of the ith person.

Person A will NOT friend request person B (B != A) if any of the following conditions are true:

age[B] <= 0.5 * age[A] + 7
age[B] > age[A]
age[B] > 100 && age[A] < 100
Otherwise, A will friend request B.

Note that if A requests B, B does not necessarily request A. Also, people will not friend request themselves.

How many total friend requests are made?

Example 1:

Input: [16,16]
Output: 2
Explanation: 2 people friend request each other.
Example 2:

Input: [16,17,18]
Output: 2
Explanation: Friend requests are made 17 -> 16, 18 -> 17.
Example 3:

Input: [20,30,100,110,120]
Output:
Explanation: Friend requests are made 110 -> 100, 120 -> 110, 120 -> 100.

Notes:

1 <= ages.length <= 20000.
1 <= ages[i] <= 120.

Solution
class Solution {
    public int numFriendRequests(int[] ages) {
        //0.5*ages[A]+7 < ages[B] <= ages[A]
        //7 < 0.5*ages[A] ====> ages[A] >= 15
        int res = 0;
        int[] nums = new int[121];
        int[] sums = new int[121];
        
        for (int age: ages) {
            nums[age]++;
        }
        
        for (int i = 1; i <= 120; i++) {
            sums[i] = sums[i-1]+nums[i];
        }
        
        for (int i = 15; i <= 120; i++) {
            if (nums[i] == 0) continue;
            int count = sums[i] - sums[i/2+7]; //number of range B
            res += count*nums[i] - nums[i]; //range B * number of age A
        }
        
        return res;
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72320.html

相关文章

  • [LeetCode/LintCode] Design Twitter/Mini Twitter

    摘要:首先建立按时间戳从大到小排列的,找到中的,出其中在中存在的,把每一个的推特链表放入,再从中取头十条推特的放入结果数组。 Design Twitter Note 建立两个HashMap,一个存user,一个存tweets。以及整型的时间戳timestamp。user的k-v pair是userId-follower_set,tweets的k-v pair是userId-tweets_li...

    honmaple 评论0 收藏0
  • Lodash 中 assign,extend 和 merge 的区别

    摘要:简介我们经常在别人的代码中看见,,函数,这三个函数用起来很相似,都是合并源对象的属性到目标对象中。会修改原来的对象在版本中,是的别名,它们的作用是一模一样的。在版本中,是的别名,和有点区别。如果源对象的属性值为,则会忽略该属性。 简介 我们经常在别人的代码中看见 assign,extend,merge 函数,这三个函数用起来很相似,都是合并源对象的属性到目标对象中。 既然都是合并对象,...

    solocoder 评论0 收藏0
  • JavaScript 编程精解 中文第三版 六、对象的秘密

    摘要:在编程文化中,我们有一个名为面向对象编程的东西,这是一组技术,使用对象和相关概念作为程序组织的中心原则。这是构造器函数的作用。因此,上面的类声明等同于上一节中的构造器定义。 来源:ApacheCN『JavaScript 编程精解 中文第三版』翻译项目原文:The Secret Life of Objects 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考...

    ddongjian0000 评论0 收藏0
  • golang学习笔记(一)——golang基础和相关数据结构

    摘要:小白前端一枚,最近在研究,记录自己学习过程中的一些笔记,以及自己的理解。此外,结构体也支持嵌套。在函数声明时,在函数名前放上一个变量,这个变量称为方法的接收器,一般是结构体类型的。 小白前端一枚,最近在研究golang,记录自己学习过程中的一些笔记,以及自己的理解。 go中包的依赖管理 go中的切片 byte 和 string go中的Map go中的struct结构体 go中的方...

    lyning 评论0 收藏0
  • Python全栈之路系列之元组数据类型

    摘要:元组和列表的为唯一区别就是列表可以更改,元组不可以更改,其他功能与列表一样创建元组的两种方法第一种第二种如果元祖内只有一个元素,那么需要加上一个逗号,否则就变成字符串了。 元组(tuple)和列表的为唯一区别就是列表可以更改,元组不可以更改,其他功能与列表一样 创建元组的两种方法 第一种 ages = (11, 22, 33, 44, 55) 第二种 ages = tuple((11,...

    李涛 评论0 收藏0

发表评论

0条评论

miya

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<