校招算法笔面试 | 校招笔面试真题-小红浏览论坛

题目

题目链接

题目链接

小红浏览论坛

题目描述

小红喜欢浏览论坛。论坛的每个贴子能被浏览者点赞或反对。假设点赞数为 a a a,反对数为 b b b,当 ∣ a − b ∣ ≥ x \lvert a - b \rvert \geq x abx 时,小红喜欢阅读的贴子。
现在有 n n n 个贴子,给出每个帖子的点赞数和反对数,问小红喜欢阅读其中多少个帖子?

输入:

  • 第一行输入两个整数 n n n x x x
  • 接下来 n n n 行每行输入两个整数,代表每个帖子的点赞数和反对数

输出:

  • 输出一个整数,表示小红喜欢阅读的帖子数量

解题思路

这是一个简单的模拟问题,可以通过以下步骤解决:

  1. 关键发现:

    • 对于每个帖子,只需要判断 ∣ a − b ∣ ≥ x \lvert a - b \rvert \geq x abx
    • 统计满足条件的帖子数量即可
  2. 解题策略:

    • 读入每个帖子的点赞数和反对数
    • 判断是否满足 ∣ a − b ∣ ≥ x \lvert a - b \rvert \geq x abx 的条件
    • 累计满足条件的帖子数量
  3. 具体步骤:

    • 读入 n n n x x x
    • 遍历每个帖子
    • 判断条件并计数

代码

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, x;
    cin >> n >> x;
    
    int ans = 0;
    for(int i = 0; i < n; i++) {
        int a, b;
        cin >> a >> b;
        if(abs(a - b) >= x) {
            ans++;
        }
    }
    
    cout << ans << endl;
    return 0;
}
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int x = sc.nextInt();
        
        int ans = 0;
        for(int i = 0; i < n; i++) {
            int a = sc.nextInt();
            int b = sc.nextInt();
            if(Math.abs(a - b) >= x) {
                ans++;
            }
        }
        
        System.out.println(ans);
    }
}
n, x = map(int, input().split())

ans = 0
for _ in range(n):
    a, b = map(int, input().split())
    if abs(a - b) >= x:
        ans += 1

print(ans)

算法及复杂度

  • 算法:模拟
  • 时间复杂度: O ( n ) \mathcal{O}(n) O(n) - 需要遍历每个帖子一次
  • 空间复杂度: O ( 1 ) \mathcal{O}(1) O(1) - 只需要常数空间存储变量

注意:

  1. 需要使用绝对值函数判断点赞数和反对数的差值
  2. 不需要存储所有帖子的信息,可以边读边处理
  3. 注意输入输出格式的处理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值