大家好这里是 春秋招笔试突围,一起备战大厂笔试
ACM金牌团队️ | 多次AK大厂笔试 | 编程一对一辅导
✨ 本系列打算持续跟新
春秋招笔试题
感谢大家的订阅➕ 和 喜欢 和 手里的小花花
本专栏已收集 40+套笔试题,
笔试真题
会在第一时间跟新近期会进行一波价格调整,没订阅的朋友抓紧冲!!!
京东春招第一场,启动!!!
今年题目的难度和去年比下降了好多呀
1️⃣ 第一题按照题意模拟即可。
2️⃣ 第二题是个力扣两数之和的简单版本。
3️⃣ 第三题原题的题目描述有问题,是一道贪心题
LYA是一位热衷于虚拟现实技术的年轻工程师。她最近开发了一个虚拟探索系统,可以在二维平面上进行移动和探索。探索者初始位于坐标原点 ,面向北方(即 轴正方向)。
探索者可以执行以下四种指令:
LYA编写了一系列指令来控制探索者的移动。现在,她需要你的帮助来计算探索者执行完所有指令后的最终位置。
输入只有一行,是一个由字符 'W'、'A'、'D' 和 'S' 组成的字符串 ,表示探索者需要执行的指令序列。
输出一行,包含两个整数 和 ,用空格分隔,表示探索者的最终坐标。
WAW
-1 1
这道题目要求我们模拟虚拟探索者的移动过程。关键在于正确处理方向的变化和坐标的更新。
我们可以用一个二维向量 来表示当前的方向:
对于每个指令,我们需要进行以下操作:
左转和右转可以通过简单的坐标变换实现:
遍历完所有指令后,最终的 坐标即为答案。
时间复杂度:,其中 是指令序列的长度。 空间复杂度:,只需要常数级的额外空间。
def virtual_explorer(instructions):
"""
模拟虚拟探索者的移动
参数:
instructions (str): 包含移动指令的字符串
返回:
tuple: 最终坐标 (x, y)
"""
x, y = 0, 0 # 初始位置
dx, dy = 0, 1 # 初始方向(北)
for cmd in instructions:
if cmd == 'W':
x += dx
y += dy
elif cmd == 'A':
dx, dy = -dy, dx # 左转90度
elif cmd == 'D':
dx, dy = dy, -dx # 右转90度
# 'S'指令不需要处理,因为探索者停留在原地
return x, y
# 读取输入
instructions = input().strip()
# 计算最终位置
final_x, final_y = virtual_explorer(instructions)
# 输出结果
print(f"{final_x} {final_y}")
import java.util.Scanner;
public class VirtualExplorer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String instructions = scanner.nextLine().trim();
int[] result = virtualExplorer(instructions);
System.out.println(result[0] + " " + result[1]);
scanner.close();
}
/**
* 模拟虚拟探索者的移动
*
* @param instructions 包含移动指令的字符串
* @return 最终坐标 [x, y]
*/
public static int[] virtualExplorer(String instructions) {
int x = 0, y = 0; // 初始位置
int dx = 0, dy = 1; // 初始方向(北)
for (char cmd : instructions.toCharArray()) {
if (cmd == 'W') {
x += dx;
y += dy;
} else if (cmd == 'A') {
int temp = dx;
dx = -dy;
dy = temp; // 左转90度
} else if (cmd == 'D') {
int temp = dx;
dx = dy;
dy = -temp; // 右转90度
}
// 'S'指令不需要处理,因为探索者停留在原地
}
return new int[]{x, y};
}
}
#include <iostream>
#include <string>
using namespace std;
/**
* 模拟虚拟探索者的移动
*
* @param instructions 包含移动指令的字符串
* @param x 最终x坐标的引用
* @param y 最终y坐标的引用
*/
void virtualExplorer(const string& instructions, int& x, int& y) {
x = 0, y = 0; // 初始位置
int dx = 0, dy = 1; // 初始方向(北)
for (char cmd : instructions) {
if (cmd == 'W') {
x += dx;
y += dy;
} else if (cmd == 'A') {
int temp = dx;
dx = -dy;
dy = temp; // 左转90度
} else if (cmd == 'D') {
int temp = dx;
dx = dy;
dy = -temp; // 右转90度
}
// 'S'指令不需要处理,因为探索者停留在原地
}
}
int main() {
string instructions;
cin >> instructions;
int final_x, final_y;
virtualExplorer(instructions, final_x, final_y);
cout << final_x << " " << final_y << endl;
return 0;
}
卢小姐是一家婚恋公司的老板。她手上有一份长度为 的会员列表,每个会员都有一个特定的魅力值。现在,她想要将这些会员两两配对,使得每对会员的魅力值之和恰好等于 。卢小姐想知道她能组成多少种不同的会员配对。
第一行给出两个整数 和 ,用空格分隔。 表示会员列表的长度, 表示目标配对魅力值之和。
第