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多种语言分析,解答。