2023 美团笔试题 0304
笔试时间:2023年3月4日 春招
第一题
题目:平滑值
小红定义一个数组的平滑值为:任意两个相邻元素的差的绝对值的最大值。例如:数组[2,4,3,3]的平滑值为|2-4|=2。小红希望你构造一个长度为n的排列,满足排列的平滑值等于k。你能帮帮她吗? 排列是指:长度为n的数组,1到n每个正整数都恰好出现1次。
输入描述
第一行输入两个正整数,分别表示n和k。其中,1≤k<n≤10^5
输出描述
输出n个数字,用空格隔开。输入 输出
样例输入
4 2
样例输出
1 3 2 4
参考题解
C++:[此代码未进行大量数据的测试,仅供参考]
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
vector<int> arr = {k + 1};
for (int i = 1; i <= k; i++) {
arr.push_back(i);
}
for (int j = k + 2; j <= n; j++) {
arr.push_back(j);
}
for (int i : arr) {
cout << i << " ";
}
return 0;
}
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
ArrayList<Integer> arr = new ArrayList<>();
arr.add(k + 1);
for (int i = 1; i <= k; i++) {
arr.add(i);
}
for (int j = k + 2; j <= n; j++) {
arr.add(j);
}
for (int i : arr) {
System.out.print(i + " ");
}
}
}
第二题
题目:p的倍数
小红拿到了一个正整数n,她可以进行若干次操作,每次操作将选择一个数位,使其加1或者减1。不过有两条限制:
1、每个数位最多只能操作一次。
2、如果选择的是9,则无法进行加1操作。如果选择的是0,则无法进行减1操作。
小红希望最终n成为p的倍数,你能帮小红输出操作结束后的整数n吗?
输入描述
两个正整数n和p。
1≤n,p≤10^13
输出描述
如果误解,请输出-1。假设有多解的时候,输出任意解即可。(如果操作包含前导零,请将前导零一起输出)
参考题解
C++:[此代码未进行大量数据的测试,仅供参考]
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int n, p;
vector<int> arr;
int ans = -1;
void dfs(int cur, int index) {
if
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2023 秋招笔试题汇总解析 文章被收录于专栏
2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。
查看7道真题和解析