大厂笔试真题解析

news2024/10/6 14:26:16

文章目录

  • 2023/5/6 华为第一题:喷墨水
  • 2023/5/16 华为第二题:表达式计算

2023/5/6 华为第一题:喷墨水

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
模拟题,代码未提交,样例过

  • 输入处理:双字节十六进制转二进制
    十六进制转十进制再转二进制,读取多个字符串多次处理,给数组arr赋值,长度不足就数组首部即字符末尾用0填充
  • 核心逻辑:分向右,向左移动分别处理
    for循环遍历数组arr,从0开始每次向右/左移动i个位置,检查是否满足条件,满足返回此时移动的步数;
  • check函数逻辑:
    判断不移动和移动了之后,对应arr数组的下标是否为1,为1的话说明此处可以喷墨,步长step+1,最终判断step是否等于数组长度,若是返回true
  • 输出处理
    判断左/右移动标记是否为-1,若不是-1,就返回更新后的数组
package ZhenTi;

import java.sql.SQLOutput;
import java.util.Scanner;

/**
 * 5/6喷墨水
 */
public class Solution29 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();
        String[] strs = sc.nextLine().split(" ");
        int[] arr = new int[n];
        for(int i=0,c=0; i<strs.length && c<n; i++){
            //十六进制变十进制变二进制,前两位0x为前缀
            char[] bs = Integer.toBinaryString(Integer.parseUnsignedInt(strs[i].substring(2),16))
                    .toCharArray();
            //长度不足16,后边的用0填充
            for(int j=0;j<16-bs.length&&c<n;j++){
                arr[c++] = 0;
            }
            for(int j=0;j<bs.length&&c<n;j++){
                arr[c++] = bs[j]- '0';
            }
        }
//        System.out.println(arr);
        int ans,ans1=-1,ans2=-1;
        //检查向右移动,从0开始遍历,只求最短的,找到了就返回
        for(int i=0;i<n;i++){
            if(check(arr,i,0)){
                ans1 = i;
                break;
            }
        }
        //检查向左移动
        for(int i=0;i<n;i++){
            if(check(arr,i,1)){
                ans2 = i;
                break;
            }
        }
        ans = (ans1==-1?0:1) + (ans2==-1?0:1);
        System.out.println(ans);
        if(ans1!=-1){
            System.out.println("+" + ans1);
            int[] res = new int[n];
            for(int i=0;i<n;i++){
                if(arr[i]==0){
                    //输出要求堵塞的孔开启即可,因此先找到堵塞的孔处理
                    if(arr[i]==0){
                        res[i-ans1] = 1;
                    }
                }
            }
            for(int item:res){
                System.out.print(item);
            }
            System.out.println();
        }
        if(ans2!=-1){
            System.out.println("-" + ans2);
            int[] res = new int[n];
            for(int i=0;i<n;i++){
                if(arr[i]==0){
                    //输出要求堵塞的孔开启即可,因此先找到堵塞的孔处理
                    if(arr[i]==0){
                        res[i+ans2] = 1;
                    }
                }
            }
            for(int item:res){
                System.out.print(item);
            }
        }


    }
    //cnt表示位移步数,dir表示移动方向,0表示向右移动,1表示向左移动
    public static boolean check(int[] arr,int cnt,int dir){
        int ans = 0;
        int n = arr.length;
        if(dir==0){//向右移动
            for(int i=0,j;i<n;i++){
                //两种情况:不移动可以实现喷墨或者向右移动cnt位也能实现喷墨
                if(arr[i]==1 || ((j=i-cnt)>=0&&arr[j]==1 )){
                    ans++;
                }else{
                    break;
                }
            }
        }else{//向左移动
            for(int i=0,j;i<n;i++){
                //两种情况:不移动可以实现喷墨或者向左移动cnt位也能实现喷墨
                if(arr[i]==1 || ((j=i+cnt)<n&&arr[j]==1 )){
                    ans++;
                }else{
                    break;
                }
            }
        }
        return ans == n;//如果ans等于数组长度n就说明喷墨成功
    }
}

2023/5/16 华为第二题:表达式计算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Baklib盘点:企业做知识管理时遇到的困惑类型有哪些?

作为一家专注于企业知识管理的公司&#xff0c;Baklib深入了解了企业在进行知识管理时可能遇到的各种困惑。在此&#xff0c;我们盘点了企业做知识管理时遇到的困惑类型&#xff0c;并就如何解决这些困惑提出了建议。 企业做知识管理时遇到的困惑类型 知识流失 许多企业面临…

跨时钟域数据同步

跨时钟信号直接传输在信号跳变时违背本地时钟域的时序要求&#xff08;建立时间约束&#xff0c;保持时间约束&#xff09;&#xff0c;容易产生亚稳态&#xff0c;无法确定亚稳态何时结束以及结束时保持在何种状态上。 用同步器抑制亚稳态的往下传播的概率&#xff0c;根据情…

一文详解Pytorch中的Tensor操作

何为Tensor&#xff1f; Tensor的英文原义是张量&#xff0c;PyTorch官网对其的定义如下&#xff1a; 也就是说&#xff0c;一个Tensor是一个包含单一数据类型的多维矩阵。通常&#xff0c;其多维特性用三维及以上的矩阵来描述&#xff0c;例如下图所示&#xff1a;单个元素为…

CloudCompare二次开发之如何通过PCL进行点云曲面重建?

文章目录 0.引言1.CloudCompare界面设计重建(reconstruct)按钮2.使用贪婪三角化进行曲面重建&#xff08;Surface_Rec&#xff09; 0.引言 因笔者课题涉及点云处理&#xff0c;需要通过PCL进行点云数据一系列处理分析&#xff0c;查阅现有网络资料&#xff0c;对常用PCL点云曲面…

SD webui 手记

源代码地址&#xff1a; https://github.com/AUTOMATIC1111/stable-diffusion-webui git拉取代码后&#xff0c;windows下支持根目录直接运行 webui-user.bat&#xff0c;前提本地需要先安装python环境&#xff0c;略过&#xff0c;我们直接跑源码玩 安装依赖 pip install …

Linux 指令(二)+完整思维导图+实图例子+深入细节+通俗易懂建议收藏

绪论 对于指令的学习&#xff0c;是一个漫长的过程&#xff0c;因为一般在后台服务器上为了减少刷新图形化界面消耗资源都是呈现出命令行的形式&#xff0c;对此我们必选要掌握好Linux的指令。今天我们接着上一章的指令来继续学习更多的指令。 话不多说安全带系好&#xff0c;发…

字节给我狠狠上了一课:危机来的时候你连准备时间都没有!

各大互联网公司的接连裁员&#xff0c;政策限制的行业接连消失&#xff0c;让今年的求职雪上加霜&#xff0c;想躺平却没有资本&#xff0c;还有人说软件测试岗位饱和了&#xff0c;对此很多求职者深信不疑&#xff0c;因为投出去的简历回复的越来越少了。甚至还有不少大厂直接…

【Linux】基本指令,拥抱Linux的第一步

[Linux]常见指令 Linux基本指令指令的本质ls指令pwd指令cd指令touch指令mkdir指令(重要)rmdir&&rm指令(重要)man指令&#xff08;重要&#xff09;cp指令&#xff08;重要&#xff09;mv指令&#xff08;重要&#xff09;重定向cat指令more指令less指令&#xff08;重要…

【C++模板】——template

C模板 模板的引入函数模板函数模板的实例化模板参数匹配原则 类模板类模板的定义格式类模板的实例化 &#x1f340;小结&#x1f340; &#x1f389;博客主页&#xff1a;小智_x0___0x_ &#x1f389;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1…

Unity之OpenXR+XR Interaction Toolkit如何自定义VR按键

一.前言 上一篇文章我们介绍了Unity的新版本InputSyste如何使用,这一篇文章,我们主要说一下,在新版基于OpenXR的VR项目中,如何自定义VR按钮的功能。 二.Samples介绍 我们使用XR Interaction Toolkit插件时,它的几个Samples是非常有用的。如下所示: 它们分别是: 1.Sta…

MySQL 教程---菜鸟教程

文章目录 MySQL 教程登录 MySQL数据库操作数据类型创建数据表删除数据表插入数据查询数据 MySQL 教程 关系型数据库管理系统&#xff08;RDBMS&#xff09; RDBMS 术语&#xff1a; 数据库&#xff1a;数据库是一些关联表的集合。数据表&#xff1a;表是数据的矩阵。在一个数…

python 中常见变量类型

数值 a 10 b 123 … 字符串 在python中 用单引号’‘和双引号""括起来的都是字符串,不使用引号括起来的不是字符串&#xff0c;字符串是使用最多的数据类型&#xff0c;用来表示一段文本信息。 比如&#xff1a; a ‘123’ b “123” 字符串之间可以用加法运算…

dubbo处理自定义异常

dubbo处理自定义异常 背景 在实际项目中&#xff0c;我们不可避免地需要使用自定义的异常&#xff0c;一般这个异常会继承RuntimeException&#xff0c;然后我们通过RestControllerAdvice注解&#xff0c;拦截业务异常类&#xff0c;做一些处理&#xff0c;但是在使用dubbo构…

六级备考28天|CET-6|听力第三讲|篇章的做题方法与练习法|2022年6月考题9-11题|16:15-17:15

目录 1. 笔记 2. 听力原文复现 (9)问题9 (10)问题10 (11)问题11 08:00开始播放 两/三个选项大面积同时出现了听力中一句话&#xff0c;一般排除这两/三个选项 1. 笔记 2. 听力原文复现 (9)问题9 -What have researchers done for the first time in history? The re…

c++ boost库学习-01-lexical_cast

一、C/C数值转换函数 C/C语言提供了几个标准库函数&#xff0c;可以将字符串、整型浮点型等相互转换。 atof()&#xff1a;将字符串转换为双精度浮点型值。 atoi()&#xff1a;将字符串转换为整型值。 atol()&#xff1a;将字符串转换为长整型值。 itoa()&#xff1a;将字符串…

redis的几种集群方式

https://www.zhihu.com/people/pan-zhi-74-31 Redis集群介绍Redis集群一般有四种方式&#xff0c;分别为&#xff1a;主从复制、哨兵模式、Cluster以及各大厂的集群方案。在3.0版本之前只支持单实例模式&#xff0c;3.0之后支持了集群方式。在3.0之前各大厂为了解决单实例Redis…

为Eclipse安装lombok插件

因为原生的Eclipse没有lombok插件&#xff0c;所以即使项目引入了lombok依赖也无法使用Data等常用标签。下面介绍一下如何手动为Eclipse添加lombok插件&#xff0c;具体操作步骤如下&#xff1a; &#xff08;1&#xff09;打开Download地址&#xff0c;点击页面中间的超链接下…

k8s集群内带GPU工作节点配置显卡驱动

k8s集群内带GPU工作节点配置显卡驱动 系统为Centos7 一、下载、安装显卡驱动 查看显卡型号 [rootVM-3-9-centos user]# lspci | grep -i nvidia 00:08.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)1.1、官网下载驱动程序 https://www.nvidia.cn/Downlo…

数据分析13——Pandas数据导出/日期数据处理/样本采样

Pandas数据导出 1、导出Excel&#xff1a; 举例&#xff1a; 代码&#xff1a;df.to_excel(‘./data/text_01.xlsx’, sheet_name‘订单明细’, indexFalse)解释&#xff1a;将df数据导入到相对路径为’./data/text_01.xlsx’的文件中&#xff0c;其中数据表名称为’订单明细…

【算法】单源最短路径算法——Dijkstra算法

文章目录 一、简介与使用场景二、算法思想三、朴素版Dijkstra四、堆优化版Dijkstra五、总结 一、简介与使用场景 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的&#xff0c;因此又叫狄克斯特拉算法。这是从一个顶点到其余各顶点的最短路径算法&#…