拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 LeetCode - 825 - 适龄的朋友 - Java -在作者看来还算细

LeetCode - 825 - 适龄的朋友 - Java -在作者看来还算细

白鹭 - 2022-02-11 2102 0 0

文章目录

  • 题目
  • 题目决议
  • 解题思维1:
    • 代码
    • 附图
  • 解题思维2:
    • 附上方法二的代码

题目

在这里插入图片描述


?

题目决议

在这里插入图片描述


?

解题思维1:

通过创建一个阵列 cur,容量为 121,阵列下标 等价于 年龄,下标对应的元素大小,就是处在该年龄的人数,
在这里插入图片描述
然后在创建一个同样大小的阵列 prev,每个元素等于 自身前一个元素 加上 在cur中 与 该元素下标对应的元素,
在这里插入图片描述
有的朋友可能看不懂这块代码,简单来说 就是累加赋值:将处于 i 年龄段及其 比 i 年龄段小的人的总和,赋予 阵列prev的 i 下标元素,将其值更新为 i 年龄段的人 及其 比 i 小的年龄段的所有人 总和,


?
接下来就是遍历 cur 阵列,如果 有处在 i 年龄的人,也就说 cur[ i ] > 0的,此时,就需要像第一种方法一样,计算出 0.5 * i + 7 的值,也就是 处于 i 年龄的人,所不能接受的最小年龄的界限bound,
而且,请注意! 我们的prev的每个元素,都是对应cur 某一年龄及其以下的人数总和,
此时用 cur[i] 所对应的 prev[[i],就是 该年龄及其以下的人数总和,减去 计算出 0.5 * i + 7 的值,也就是 处于 i 年龄的人,所不能接受的最小年龄的界限bound,
用 prev[ i ] - prev[bound] 的结果:就是 处于 【0.5 * i + 7 < age[y] <= i 】的人数总和,也就是减去的结果都是 比 0.5 * i + 7 的结果 大,也就是说 所有人,都是 i 年龄人 的 交朋友物件,
当然 除了 自己,(不要问什么!题目要求的)
然后,就是把每个 i 年龄的人申请信息条数的一个累加,
最后回传这个累加的结果,
在这里插入图片描述


?

附上方法二的代码

class Solution {
    public int numFriendRequests(int[] ages) {
       // 统计每个年龄的人数,将其阵列元素化
        int[] cur = new int[121];
        for(int age : ages){
            cur[age]++;
        }
        //统计每个年龄及其以下的人数总和,将其阵列元素化
        int[] prev = new int[121];
        for(int i = 1; i < 121;i++){
            prev[i] = prev[i-1] + cur[i];
        }
        
        int result = 0;// 记录最终结果
        // 15岁以下不考虑,题目说的,从下标15 开始遍历阵列 cur
        for(int i = 15; i < 121; i++){
            if(cur[i]>0){// 如果有处在 i 年龄的人
                int bound = (int)(0.5*i +7);// 计算他们所能接受最小年龄界限

                result += cur[i] * (prev[i] - prev[bound]-1);
                // 按照题目要求, i 年龄的人,所能接受的最小年龄,至少大于 界限 bound,
                // 用 目前 i 年龄及其以下的人数总和 减去 界限 bound的人数总和
                // 剩下就都是 比 bound 年龄大的人,且 最大年龄不超过 i 的人
                // 再根据题目要求,减去自己,剩下的人就是都 好友申请物件了,
                // 当然 处于 i 年龄的人,可能不止一个,所以要乘以一个 cur[i],
                // 即: 每个 处于 i 年龄的人,都可以向除了自己以外的人,发出好友申请,
                // 最后,将其每个 i 年龄,所申请的信息条数累加,
            }
        }
        return result;// 最侄训传它,
    }
}

在这里插入图片描述

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *