当前位置:网站首页>【有趣的编程题之适龄的朋友】(Leetcode原题详解)
【有趣的编程题之适龄的朋友】(Leetcode原题详解)
2022-04-22 09:35:00 【想 挣钱】
朋友们,今天的题目是适龄的朋友
废话不多说,我们直接看题
一、题目要求



二、题目解析
对于发送好友请求的三个前提条件
通过简单的计算,我们可以发现,当条件三满足时,条件二一定满足。而发送好友请求的条件是三个条件都为假。
所以,我们只需要找到不满足条件一和条件二的ages[y]即可
即ages[y]需要满足下面式子:

三、逻辑分析

所以,我们可以先对ages数组进行升序排序,然后遍历ages[x]>=15的元素,ages[y]的区间就在
(0.5×ages[x]+7,ages[x]]之间

经过上面的分析,我们可以得出[left,right]就是所有ages[y]的区间,但是要注意ages[x]一定在这个区间中,故要将区间中元素个数-1,再将每一个ages[x]对应的元素个数累加,就是最终的结果
四、代码展示
static int cmp(const void * pa, const void * pb) {
return *(int *)pa - *(int *)pb;
}
int numFriendRequests(int* ages, int agesSize){
//用qsort函数对ages进行升序排序
qsort(ages, agesSize, sizeof(int), cmp);
int left = 0, right = 0, count = 0;
for (int i = 0; i < agesSize; ++i) {
//当ages[x]<15时,没有符合要求的ages[y]
if (ages[i] < 15) {
continue;
}
while (ages[left] <= 0.5 * ages[i] + 7) {
++left;
}
while (right + 1 < agesSize && ages[right + 1] <= ages[i]) {
++right;
}
count += right - left;
}
return count;
}
五、总结
其实这个问题的关键在于怎么降低时间复杂度,这就要求我们仔细审视题中给出的条件,再一步步简化代码操作,我能想到的最佳方案就是这个了。如果朋友们有更好的方法,请不吝赐教!!!
希望对大家有帮助!!!一起加油吧
我们下次再见!

版权声明
本文为[想 挣钱]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_62618590/article/details/124333353
边栏推荐
猜你喜欢

P8资料大放送

Transformer模型中应用的各类位置编码

在线YAML转Properties工具

2022年熔化焊接与热切割操作证考试题模拟考试平台操作

超越 iTerm!号称下一代 Terminal 终端神器,用完爱不释手!

Starting from the needs of popular science, doctor training and promotion of innovative medical equipment products, how does "baiyihua" layout medical visualization SaaS services?

软件测试基础知识,看完就可以和面试官硬碰硬

server 2019服务器可用内存是实际内存的一半

Detailed explanation of p-type mos tube switch circuit and working principle - Kia MOS tube

找出二维数组最大的一个数
随机推荐
PHP & Laravel & 掌握 api 生成 token 的几种方式以及一些注意事项(坑)
L3-001 凑零钱 (30 分) (剪枝 dfs
SQL 创建数据库
杰理之通常影响CPU性能测试结果的因素有:【篇】
APP优化及积分榜进阶下篇【MUI+Flask+MongoDB】
编写一个简单的考试程序,在控制台完成出题、答题的交互。试题(Question)分为单选(SingleChoice)和多选( MultiChoice)两种。
L2-031 深入虎穴 (25 分) (dfs
安装Navicat 15 详解及相关问题详解
LeetCode46-全排列
Easy to use note taking software
Halo 开源项目学习(一):项目启动
2022起重机司机(限桥式起重机)考试题库及在线模拟考试
Understand the first snapshot read and the second snapshot read of the same transaction in MySQL mvcc - Notes
Online yaml to properties tool
经典场效应管如何快速关断技巧-KIA MOS管
server 2019服务器可用内存是实际内存的一半
【ValueError: math domain error】
L3-003 social cluster (30 points) (concurrent search)
Quantitative investment learning -- Introduction to orderflow
云数引领下,桑达股份2021年营收427.04亿元,同比增长33.21%