美团2023秋招算法面试真题解析

您所在的位置:网站首页 美团秋招真题 美团2023秋招算法面试真题解析

美团2023秋招算法面试真题解析

2023-12-19 12:06| 来源: 网络整理| 查看: 265

可优化逻辑:因为x和y是后输入的,必须存储整个数组,但是上面说了 排列是指一个长度为n的数组,其中 1 到n 每个元素恰好出现一次。可以充分利用该信息创建一个大小为n+1的数组存储各个元数的所在位置,这样最终直接判断x和y所在位置差是否为1即可判断结果。

代码importjava.util.Scanner;

publicclassMain{

publicstaticvoidmain(String[] args){

Scanner scanner = newScanner(System.in);

intn = scanner.nextInt;

int[] arr = newint[n];

for( inti = 0; i < n; i++) {

arr[i] = scanner.nextInt;

}

intx = scanner.nextInt;

inty = scanner.nextInt;

for( inti = 0; i < n - 1; i++) {

if((arr[i] == x && arr[i + 1] == y) || (arr[i] == y && arr[i + 1] == x)) {

System.out.println( "Yes");

return;

}

}

System.out.println( "No");

}

}

使用哈希表优化后代码:少一层枚举

importjava.util.Scanner;

publicclassMain{

publicstaticvoidmain(String[] args){

Scanner scanner = newScanner(System.in);

intn = scanner.nextInt;

//int[] arr = new int[n];

//map 记录每个元素所在的位置

int[] map = newint[n+ 1];

for( inti = 0; i < n; i++) {

intai = scanner.nextInt;

map[ai] = i;

}

intx = scanner.nextInt;

inty = scanner.nextInt;

if(Math.abs(map[x]-map[y])== 1){

System.out.println( "Yes");

return;

}

System.out.println( "No");

}

}

时空复杂度

时间复杂度:O(n)。

空间复杂度:O(n)。

END

不知道怎么样开始刷 LeetCode ,那么可以参考我整理的这个刷题路线,历时两年,经历了上千个同学的实操检验。

LeetCode 刷题顺序,看这一篇就够了

看了很多算法视频、参加了很多算法训练营,还是感觉很难入门,那么可以尝试看动画刷 LeetCode 。

看动画刷 LeetCode

刷了很多 LeetCode ,面对大厂的算法真题却一筹莫展,那么建议你提前了解大厂算法面试真题的特点,有针对性的练习。

大厂算法面试中的真题 ACM 模式怎么准备?

想针对性的练习大厂真题,下面这个免费的 OJ 平台可以帮助你。

https://oj.algomooc.com/返回搜狐,查看更多



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3