美团2023秋招算法面试真题解析 |
您所在的位置:网站首页 › 美团秋招真题 › 美团2023秋招算法面试真题解析 |
可优化逻辑:因为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 |