【秋招突围】2024届秋招-京东笔试题-第三套

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试

💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导

✨ 本系列打算持续跟新 春秋招笔试题

👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸

✨ 笔试合集传送们 -> 🧷春秋招笔试合集

🍒 本专栏已收集 60+ 套笔试题,笔试真题 会在第一时间跟新

🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力 💞!

alt

🍭 本次给大家带来2024京东秋招的笔试题,和我一起备战今年京东的秋招吧

🚂 01.K小姐的礼物清单

问题描述

K小姐正在准备送给朋友们的礼物,她有一个长度为 的礼物清单 ,其中 表示第 个朋友希望收到的礼物价格。为了让朋友们都感到满意,K小姐决定再准备一个长度为 的清单 ,其中 表示第 个朋友实际收到的礼物价格。

K小姐希望清单 满足以下条件:

  1. 每个礼物的价格都是 范围内的整数。
  2. 所有礼物的价格互不相同。
  3. 对于每个朋友 ,都有

请你帮助K小姐构造出一个满足条件的礼物清单

输入格式

第一行包含一个整数 ,表示礼物清单的长度。

第二行包含 个整数,表示礼物清单 ,其中第 个整数 表示第 个朋友希望收到的礼物价格。

输出格式

输出一行,包含 个整数,表示构造出的礼物清单 ,其中第 个整数 表示第 个朋友实际收到的礼物价格。

样例输入

5
1 2 3 4 5

样例输出

1 2 3 4 5

数据范围

题解

本题可以按照输入的顺序依次构造清单 。对于第 个朋友,我们可以先计算出一个满足条件 的最小正整数 ,然后检查 是否已经在之前的礼物价格中出现过。如果出现过,就将 增加 ,直到找到一个未出现过的且不超过 的礼物价格。

具体步骤如下:

  1. 遍历清单 的每个元素
  2. 计算 ,如果 ,则将 加上
  3. 如果 已经在之前的礼物价格中出现过,就将 增加 ,直到找到一个未出现过的且不超过 的礼物价格。
  4. 加入清单 ,并将 标记为已出现。
  5. 输出构造出的清单

时间复杂度为 ,空间复杂度为

参考代码

  • Python
def solve():
    n = int(input())
    A = list(map(int, input().split()))
    B = []
    used = set()
    
    for i, a in enumerate(A, start=1):
        b = i - a % i
        if b < 1:
            b += i
        while b in used and b <= 10**9:
            b += i
        B.append(b)
        used.add(b)
    
    print(*B)

solve()
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] A = new int[n];
        for (int i = 0; i < n; i++) {
            A[i] = sc.nextInt();
        }
        
        int[] B = new int[n];
        Set<Integer> used = new HashSet<>();
        
        for (int i = 0; i < n; i++) {
            int b = i + 1 - A[i] % (i + 1);
            if (b < 1) {
                b += i + 1;
            }
            while (used.contains(b) && b <= 1000000000) {
                b += i + 1;
            }
            B[i] = b;
            used.add(b);
        }
        
        for (int b : B) {
            System.out.print(b + " ");
        }
    }
}
  • Cpp
#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;

void solve() {
    int n;
    cin >> n;
    vector<int> A(n);
    for (int i = 0; i < n; i++) {
        cin >> A[i];
    }
    
    vector<int> B;
    unordered_set<int> used;
    
    for (int i = 0; i < n; i++) {
        int b = i + 1 - A[i] % (i + 1);
        if (b < 1) {
            b += i + 1;
        }
        while (used.count(b) && b <= 1e9) {
            b += i + 1;
        }
        B.push_back(b);
        used.insert(b);
    }
    
    for (int b : B) {
        cout << b << " ";
    }
}

int main() {
    solve();
    return 0;
}

🧇 02.K小姐的蛋糕店

问题描述

K小姐经营着一家蛋糕店,她的蛋糕店有 种口味的蛋糕。这 种口味的蛋糕在 A 工厂和 B 工厂都有生产。

对于每种口味的蛋糕,如果 A 工厂生产的口感值为 ,价格为 ;B 工厂生产的口感值为 ,价格为 。K小姐会比较两个工厂生产的同一口味蛋糕,如果 ,那么她会选择从 A 工厂进货这种口味的蛋糕;如果 ,那么她会选择从 B 工厂进货这种口味的蛋糕;如果两个工厂生产的蛋糕口感值和价格都相同,或者一个工厂口感值更高但价格也更高,那么K小姐就不会选择进货这种口味的蛋糕。

现在给定 种口味蛋糕在两个工厂的口感值和价格,请问K小姐最终会选择进货多少种口味的蛋糕?

输入格式

第一行输入一个整数 ,表示蛋糕的口味数量。

第二行输入 个整数,分别表示 ,即 A 工厂生产的 种口味蛋糕的口感值。

第三行输入 个整数,分别表示 ,即 B 工厂生产的 种口味蛋糕的口感值。

第四行输入 个整数,分别表示 ,即 A 工厂生产的 种口味蛋糕的价格。

第五行输入 个整数,分别表示 ,即 B 工厂生产的 种口味蛋糕的价格。

输出格式

输出一个整数,表示K小姐最终选择进货的蛋糕口味数量。

样例输入

5
1 2 3 4 5
5 4 3 2 1
10 9 8 7 6
6 7 8 9 10

样例输出

4

数据范围

题解

本题可以通过简单的比较来解决。对于每种口味的蛋糕,我们比较 A 工厂和 B 工厂生产的蛋糕的口感值和价格,如果满足以下两个条件之一,就选择进货该口味的蛋糕:

  1. A 工厂生产的蛋糕口感值更高,且价格更低,即
  2. B 工厂生产的蛋糕口感值更高,且价格更低,即

最后统计满足条件的蛋糕口味数量即可。

时间复杂度:,其中 是蛋糕的口味数量。 空间复杂度:

参考代码

  • Python
n = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
C = list(map(int, input().split()))
D = list(map(int, input().split()))

count = 0
for i in range(n):
    if A[i] > B[i] and C[i] < D[i]:
        count += 1
    elif B[i] > A[i] and D[i] < C[i]:
        count += 1

print(count)
  • Java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        int[] A = new int[n];
        int[] B = new int[n];
        int[] C = new int[n];
        int[] D = new int[n];
        
        for (int i = 0; i < n; i++) {
            A[i] = sc.nextInt();
        }
        for (int i = 0; i < n; i++) {
  

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

学长刷题笔记 文章被收录于专栏

这里收集了超全的刷题笔记,欢迎大家的订阅,会持续跟新的

全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
2 7 评论
分享
牛客网
牛客企业服务