【2024-02-25】360春招笔试两道编程题解

恭喜发现宝藏!搜索公众号【TechGuide】回复公司名,解锁更多新鲜好文和互联网大厂的笔经面经。
作者@TechGuide【全网同名】

订阅专栏: 【专享版】2024最新大厂笔试真题解析,错过必后悔的宝藏资源!

第一题:函数排列

题目描述

你有一个长度为m的正整数序列,下标从1开始。对于这个序列,你需要统计整个序列的数字种类数,记种类数为m,之后对于每一种数字x,记其出现次数为Cx,设函数f(x)表示在序列中从左到右第[Cx/2]个数字x对应的下标([y]表示对y向上取整,例如[0.5]=1,[2]=2)。最后你需要将所有f(x)按从小到大的顺序输出出来。

输入描述

第一行一个正整数n,表示序列长度
第二行n个由空格隔开的正整数a1,a2,…an,表示该序列
1 ≤n ≤ 100000
1 ≤ ai < 10000

输出描述

第一行输出一个正整数m,表示序列中的数字种类数
第二行输出m个由空格隔开的正整数,分别表示从小到大的顺序排序之后的函数值,未尾不要输出多余空格。

样例

输入

9
3 4 5 5 3 4 4 5 3

输出

3
4 5 6

样例说明

一共有3,4,5三种数字,其中f(3)=5,f(4)=6,f(5)=4 ,排序后就是4,5,6

思路

遍历序列,统计数字出现次数和位置,计算函数值再输出即可。

代码

Java版本


public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] arr = new int[n];for (int i = 0; i < n; i++) {arr[i] = scanner.nextInt();}int[] res = calculateRes(arr);System.out.println(res.length);for (int val : res) {System.out.print(val + " ");}}private static int[] calculateRes(int[] arr) {Map<Integer, Integer> counter = new HashMap<>();Map<Integer, List<Integer>> positions = new HashMap<>();int position = 1;for (int x : arr) {counter.put(x, counter.getOrDefault(x, 0) + 1);if (counter.get(x) == 1) {positions.put(x, new ArrayList<>(Collections.singletonList(position)));} else {positions.get(x).add(position);}position++;}int[] result = new int[counter.size()];int count = 0;for (int x : counter.keySet()) {int p = (counter.get(x) - 1) / 2 + 1;result[count] = positions.get(x).get(p - 1);count++;}Arrays.sort(result);return result;}
}
// vx公众号关注TechGuide,专业生产offer收割机。

CPP版本

#include <iostream>
#include <vector>
#include <map>
#include <algorithm>using namespace std;vector<int> calculateRes(const vector<int>& arr) {map<int, int> counter;map<int, vector<int>> positions;int position = 1;for (int x : arr) {counter[x] = counter[x] + 1;if (counter[x] == 1) {positions[x] = {position};} else {positions[x].push_back(position);}position++;}vector<int> result(counter.size());int count = 0;for (auto& pair : counter) {int p = (pair.second - 1) / 2 + 1;result[count] = positions[pair.first][p - 1];count++;}sort(result.begin(), result.end());return result;
}int main() {int n;cin >> n;vector<int> arr(n);for (int i = 0; i < n; i++) {cin >> arr[i];}vector<int> res = calculateRes(arr);cout << res.size() << endl;for (int val : res) {cout << val << " ";}return 0;
}
// vx公众号关注TechGuide,专业生产offer收割机。

第二题:双人游戏

题目描述

你和你的朋友最近喜欢上了一款电子游戏,这个游戏需要两个人一起玩,每个玩家控制一个角色。我们将这两个角色分别命名为P1和P2。

游戏在一个无限大的方格地图上玩,每个玩家可以通过操作键盘上的WASD键来控制自己的角色。详细的说,按W键可以往上走一格;按A键可以往左移动一格;按S键可以往下移动一格;按D键可以往右移动一格。

游戏一开始,P1降临在这个位置(x1, y1),P2降临在(x2, y2),之后他们同时操作了n次。一旦P1与P2在某时刻同时出现在某一个整数格点(即横纵坐标都为整数)上,那么游戏就结束。

现在,给出他们的某一局游戏的操作记录,游戏系统需要判断是否在其中某个时刻就已经结束了,并输出最早能够判断这局游戏结束的时刻。

输入描述

第一行一个正整数n

第二行四个整数x1, y1, x2, y2

第三行一个长度为n且仅包含WASD四种字母的字符串,表示P1的操作记录

第四行一个长度为n且仅包含WASD四种字母的字符串,表示P2的操作记录

(x1, y1)为P1的初始位置,(x2, y2)为P2的初始位置

初始P1和P2位置互不相同

输出描述

如果不能判断出游戏是否结束,输出"Not Over";否则输出一行一个整数,表示最早的能判断游戏是否结束的操作次数。

样例

输入

4
1 1 4 4
DWDD
ASSS

输出

3

样例说明

P1的初始位置为(1,1),P2的初始位置是(4,4),两人最终会在(3,2)相遇

思路

模拟两人运动轨迹。

代码

Java版本

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int x1 = scanner.nextInt();int y1 = scanner.nextInt();int x2 = scanner.nextInt();int y2 = scanner.nextInt();String str1 = scanner.next();String str2 = scanner.next();boolean ok = false;for (int i = 0; i < n; i++) {int[] result1 = move(x1, y1, str1.charAt(i));int[] result2 = move(x2, y2, str2.charAt(i));x1 = result1[0];y1 = result1[1];x2 = result2[0];y2 = result2[1];if (x1 == x2 && y1 == y2) {ok = true;System.out.println(i + 1);break;}}if (!ok) {System.out.println("Not Over");}}private static int[] move(int x, int y, char ch) {if (ch == 'W') {x += 1;}if (ch == 'A') {y -= 1;}if (ch == 'S') {x -= 1;}if (ch == 'D') {y += 1;}return new int[]{x, y};}
}
// vx公众号关注TechGuide,专业生产offer收割机。

CPP版本

#include <iostream>using namespace std;int main() {int n;cin >> n;int x1, y1, x2, y2;cin >> x1 >> y1 >> x2 >> y2;string str1, str2;cin >> str1 >> str2;bool ok = false;for (int i = 0; i < n; i++) {int result1[2] = {0};int result2[2] = {0};if (str1[i] == 'W') {result1[0] = x1 + 1;} else if (str1[i] == 'A') {result1[1] = y1 - 1;} else if (str1[i] == 'S') {result1[0] = x1 - 1;} else if (str1[i] == 'D') {result1[1] = y1 + 1;}if (str2[i] == 'W') {result2[0] = x2 + 1;} else if (str2[i] == 'A') {result2[1] = y2 - 1;} else if (str2[i] == 'S') {result2[0] = x2 - 1;} else if (str2[i] == 'D') {result2[1] = y2 + 1;}x1 = result1[0];y1 = result1[1];x2 = result2[0];y2 = result2[1];if (x1 == x2 && y1 == y2) {ok = true;cout << i + 1 << endl;break;}}if (!ok) {cout << "Not Over" << endl;}return 0;
}
// vx公众号关注TechGuide,专业生产offer收割机。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

积分商城管理系统的设计与实现

积分商城管理系统的设计与实现 获取源码——》公主号&#xff1a;计算机专业毕设大全

javascript给对象添加迭代器

迭代器是啥就自行百度了 为啥for…of可以遍历数组&#xff0c;为啥不能遍历对象&#xff0c;就是for…of会调用迭代器&#xff0c;而数组是内置了迭代器了&#xff0c;而对象没有内置&#xff0c;所以直接使用for…of遍历对象会报错&#xff0c;因此只用在对象的原型上面自定义…

YOLO算法改进Backbone系列之:EfficientViT

EfficientViT: Memory Effificient Vision Transformer with Cascaded Group Attention 摘要&#xff1a;视觉transformer由于其高模型能力而取得了巨大的成功。然而&#xff0c;它们卓越的性能伴随着沉重的计算成本&#xff0c;这使得它们不适合实时应用。在这篇论文中&#x…

一般情况下,硬件中使用Repeating Sequence出现波形很奇怪就是数据的周期频率和mcu运行的频率不一致导致的

一般情况下&#xff0c;出现波形很奇怪就是数据的周期频率和mcu运行的频率不一致导致的 把timer values 修改为0 1就好了&#xff0c;如果是0&#xff0c;0.1就不行&#xff0c;不会有下面的波形

YOLOv9中的“RepNCSPELAN4”结构!

RepNCSPELAN4结构出炉啦&#xff0c;收藏起来写论文用&#xff01; 1.代码&#xff1a; 代码路径&#xff1a;yolov9-main->models->common.py&#xff0c;代码如下&#xff1a; class RepNCSPELAN4(nn.Module):# csp-elandef __init__(self, c1, c2, c3, c4, c51): # …

使用EFCore连接SQLite

简介 在使用EFCore连接SQLite之前我们先来了解一下SQLite SQLite是一个轻量级、自包含、无服务器、零配置的事务性SQL数据库引擎&#xff0c;它支持SQL92标准的大多数查询语言并兼容ACID事务。具体如下&#xff1a; 轻量级&#xff1a;SQLite非常轻巧&#xff0c;它的库体积…

UE5 C++ Gas开发 学习记录(三)

添加AuraPlayerState,AuraAbilitySystemComponentBase和AuraAttributeSet 在Build.cs里添加 // Copyright Epic Games, Inc. All Rights Reserved. using UnrealBuildTool; public class MyGas : ModuleRules { public MyGas(ReadOnlyTargetRules Target) : base(Target) { P…

leetcode hot100打家劫舍三

本题是打家劫舍的变形&#xff0c;数据结构是树形。涉及到树的题目一定要想清楚树的遍历顺序&#xff08;前中后序&#xff09;。之后再考虑利用动态规划来解决。 动态规划是一直记录状态&#xff0c;我们可以根据动态规划的数组来记录变化的状态&#xff0c;最终求的自己想要…

【算法笔记】ch01_01_0771 宝石与石头

笔记介绍&#xff1a; 本项目是datawhale发布的LeetCode 算法笔记&#xff08;Leetcode-Notes&#xff09;课程完成笔记&#xff0c;根据推荐题目循序渐进练习算法题目。主要用python进行书写相关代码&#xff0c;会介绍解题思路及跑通解法。 0771. 宝石与石头 题目大意 描…

Python字符串访问与拼接你搞懂了吗?

使用下标访问字符串&#xff0c;从0开始计数&#xff0c;-1表示最后一个字符。三种遍历字符串的方法&#xff1a;for循环、len()和enumerate()。字符串拼接只能是字符串之间使用&#xff0c;不能与数字拼接。 1.下标访问字符串 通过下标访问字符串的内容&#xff0c;下标从 0 …

Shell脚本介绍及脚本功能

文章目录 一、什么是shell二、hello word2.1 echo2.2第一个脚本 三、Bash的基本功能3.1别名3.2常用快捷键3.3输入输出3.4 输出重定向3.5 多命令执行3.6 管道符3.7 通配符和特殊符号 一、什么是shell Shell 是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。S…

视频号视频下载教程:如何把微信视频号的视频下载下来

视频号下载相信不少人都多少有一些了解&#xff0c;但今天我们就来细说一下关于视频号视频下载的相关疑问&#xff0c;以及大家经常会问到底如何把微信视频号的视频下载下来&#xff1f; 视频号视频下载教程 视频号链接提取器详细使用指南&#xff0c;教你轻松下载号视频&…

Django后台管理(二)

一、自定义注册管理类介绍 官网:Django 管理站点 | Django 文档 | Django 注册模型除了使用 Django 默认的管理类admin,也可以自定义,比如: class StudentAdmin(admin.ModelAdmin):pass admin.site.register(Student, StudentAdmin)ModelAdmin 类是管理界面中模型的表示。…

功能富集分析 | GO| KEGG

写在前面 我们《复现SCI文章系列教程》专栏现在是免费开放&#xff0c;推出这个专栏差不多半年的时间&#xff0c;但是由于个人的精力和时间有限&#xff0c;只更新了一部分。后续的更新太慢了。因此&#xff0c;最终考虑后还是免费开放吧&#xff0c;反正不是什么那么神秘的东…

Linux环境下的性能分析 之 CPU篇(二)

2、CPU的使用情况分析 a、类似任务管理器的top & htop 说到对CPU的性能分析&#xff0c;大家一定不会忘记windows下那个最熟悉的工具&#xff1a;任务管理器。 有了这个玩意儿&#xff0c;我们就可以看到CPU的利用率&#xff0c;以及每一个进程所占用的CPU资源。那在Linu…

刷题第1天:LeetCode27--移除数组元素--双指针法(快慢指针法)

LeetCode27移除元素&#xff1a;给你一个数组nums和一个值val&#xff0c;你需要原地移除所有数值等于val的元素&#xff0c;并返回移除后数组的新长度。不要使用额外的数组空间&#xff0c;你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组…

LeetCode 15 三数之和

LeetCode15 三数之和 在解决算法问题时&#xff0c;三数之和问题是一个经典且常见的挑战之一。给定一个整数数组&#xff0c;任务是找出所有不重复的三元组&#xff0c;使得三元组中的元素之和为零。 问题描述 给定一个整数数组 nums&#xff0c;判断是否存在三元组 [nums[i…

【论文精读】LLaMA1

摘要 以往的LLM&#xff08;Large Languages Models&#xff09;研究都遵从一个假设&#xff0c;即更多的参数将导致更好的性能。但也发现&#xff0c;给定计算预算限制后&#xff0c;最佳性能的模型不是参数最大的&#xff0c;而是数据更多的。对于实际场景&#xff0c;首选的…

缺省参数(默认参数)

概念&#xff1a;定义或声明函数时为函数的参数指定一个缺省值&#xff08;默认值&#xff09;。 使用规则&#xff1a;如果调用时没有实参则用缺省值&#xff0c;有则用指定实参。如下。 void Func(int a 0) {cout<<a<<endl; } int main() {Func(); // 没有…

FPS游戏之漫谈Shader.globalMaximumLOD

为什么要谈Shader.globalMaximumLOD 因为需要啊 不知道有没有发现某某场景在某个显卡上帧率很低 其他显卡就没有低帧率。怎么办呢&#xff1f;有没有快的办法 那就直接硬编码检测 某地图 某显卡直接降低globalMaximumLOD Shader.globalMaximumLOD是Unity中的一个属性&#xff…