笔试强训(11)

news2024/12/23 13:30:04

第一题:二进制插入二进制插入__牛客网

给定32位整数n和m,同时我们指定i和j,将m的二进制位数插入到n的二进制位数的j到i位,我们保证n的j到i位均是等于0的,况且m的二进制位数小于等于i-j+1,其中二进制的位数从0开始从低到高

测试样例:

1024,19,2,6

返回:1100

思路:

1)我们先来进行分析一下这道题:n=1024,m=19

我们先把m的二进制位数先写出来,那么就是:10000000000

我接下来把n的二进制位数都写出来,那么就是:10011

2)另外在题目中已经说过了,我们要进行插入的目标位置一定是都是等于0的

 

import java.util.*;

public class BinInsert {
    public int binInsert(int n, int m, int begin, int end) {
        for(int i=0;i<begin;i++){
            m=m<<1;
        }
        int result=m|n;
        return result;
    }
}

笔试题2:查找组成一个偶数最接近的两个素数查找组成一个偶数最接近的两个素数_牛客题霸_牛客网

第一种思路:我们期望的是定义一个下标i从前向后进行遍历,进行遍历的结束位置是小于等于index/2,我们边进行遍历边进行判断index-i-i的值是否小于我们之前的最大值

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static Boolean IsPrime(int data){
        for(int i=2;i<=data/2;i++){
//注意我们这里面的截止条件是不能是Math.sqrt(data)的值,因为比如说输入一个13,最终输出的应该是6和7,但是最后会进行输出2和11,也就是说最终根本走不到6和7的位置
                if(data%i==0){
                   return false;
                }
        }
        return true;
    }
    public static void main(String[] args) {
      Scanner scanner=new Scanner(System.in);
      while(scanner.hasNext()){
           int index=scanner.nextInt();
           int min=Integer.MAX_VALUE;
           int[] array=new int[2];
      for(int i=2;i<=index/2;i++){
          if(IsPrime(i)&&IsPrime(index-i)){
                int result=index-i-i;
                if(result<=min){
                      min=result;
                      array[0]=i;
                      array[1]=index-i;
                }
          }
      }
     System.out.println(array[0]);
     System.out.println(array[1]);
      }
    }
}

第二种思路:我们从这个数的中间位置向前开始进行遍历

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static boolean IsPrime(int data){
        for(int i=2;i<=Math.sqrt(data);i++){
                if(data%i==0){
                    return false;
                }
        }
        return true;
    }
    public static void main(String[] args) {
    Scanner scanner=new Scanner(System.in);
    int result=scanner.nextInt();
    for(int i=result/2;i>1;i--){
        if(IsPrime(i)&&IsPrime(result-i)){
                System.out.println(i);
                System.out.println(result-i);
                break;
           }
       }
    }
}

笔试题三.参数解析: 参数解析_牛客题霸_牛客网

中心思路:

1)当我们遇到双引号的时候,我们要一直向后进行遍历直到遇到第二个双引号

2)我们本质上是在使用StringBuilder来进行拼接

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String s=scanner.nextLine();
  //1.我们先进行统计整个字符串按照空格分割之后字符串的个数
    int i=0;
    int count=0;
    while(i<s.length()){
        if(s.charAt(i)==' '){
                count++;
        }
        if(s.charAt(i)=='"'){
                i++;
        while(i<s.length()&&s.charAt(i)!='"'){
                i++;
          }
 //循环退出之后,我们此时的i下标此时指向了"位置,此时我们应该让i在进行++一下
        }
        i++;
    }
    System.out.println(count+1);
    i=0;
//2我们开始进行分个字符
    StringBuilder sb=new StringBuilder();
    while(i<s.length()){
        if(s.charAt(i)==' '){
           sb.append("\n");
           i++;
        }else{
            if(s.charAt(i)=='"'){
                i++;
                while(i<s.length()&&s.charAt(i)!='"'){
                        sb.append(s.charAt(i));
                        i++;
                }
                i++;
            }else{
                sb.append(s.charAt(i));
                i++;
            }
        }
    }
System.out.println(sb);
    }
}

思路2:我们可以使用flag值来进行做标记,我们默认情况下flag的值是1,但是说如果遇到第一个",那么我们就将flag置为0,遇到第二个",我们就将flag置为1

异或思路:相同为0,不同为1

import java.util.*;
public class Main {
    public static void main(String[] args) {
//1.我们先进行统计所有单词的个数        
        Scanner scanner=new Scanner(System.in);
        String str=scanner.nextLine();
        int count=0;
        int i=0;
        while(i<str.length()){
             if(str.charAt(i)==' '){
                count++;
             }
//我们遇到左",我们就一直向后进行遍历,直到遇到第二个"
             if(str.charAt(i)=='"'){
                i++;
                while(i<str.length()&&str.charAt(i)!='"'){
                        i++;
                }
//说明此时i指向了第二个",我们此时就应该让i继续向后++操作 
             }
          i++;
        }
       System.out.println(count+1);
//2.我们在进行尝试打印所有空格
       i=0;
       int flag=1;
    for(i=0;i<str.length();i++){
        if(str.charAt(i)=='"'){
            flag=flag^1;
        }
//除了双引号里面的空格和双引号,其他都进行输出
        if(str.charAt(i)!=' '&&str.charAt(i)!='"'){
           System.out.print(str.charAt(i));
        }
//双引号里面的空格我们要进行特殊处理
        if(str.charAt(i)==' '&&flag==0){
            System.out.print(" ");
        }
//我们如果遇到双引号之外的空格根本就不需要进行输出,直接打印一个换行就可以了
        if(str.charAt(i)==' '&&flag==1){
           System.out.println();
        }
      }
    }
}

笔试题四:跳石板

题目叙述:我们的小易来到了一条石板路前面,每一块石板上面从1紧挨着编号为1,2,3.....这一条石板路需要特殊的规则才可以向前前进,对于当前小易所在的编号为K的石板,小易单次只能向前跳当前K的一个约数(不会包含1和K)步,即跳到K+X(X为K的一个非1和本身的约数的位置),小易当前处于编号为N的石板,他是想要进行跳转到编号恰好是M的石板上面去,小易想要知道至少要进行跳转几次才可以到达

例如说:N=4,M=24

4->6->8->12->18->24,于是小易至少要跳跃5次,就可以从4号石板跳转到24号石板

思路:

1)我们首先要进行想明白,从N->M肯定会有多种解法的,我们最终还是需要进行寻找一个最优解,因为就是说每一个对应的K值是由多个因子的,但是对应的一个K值本身和1是不可以被包含进来的

2)我们在这里面采取的思想就是动态规划,答案要在后面的问题要用到

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

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

相关文章

js设计模式(八)-总体感受一下设计模式

前言 首先&#xff0c;不得不说我们是站在巨人的肩膀上写代码&#xff0c;前辈们已经很合理的帮助我们总结出来了23种设计模式&#xff0c;虽然有些已经被语言直接使用Api实现了&#xff0c;感谢走在前沿的攻城狮。 但是真真正正的看一遍所有的设计模式还是很有必要的&#x…

MyBatis查询数据库

1.MyBatis 是什么&#xff1f; MyBatis 是⼀款优秀的持久层框架&#xff0c;它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO&#xf…

计算机基础——计算机分类

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 前言 本章将会讲解计算机分类应用领域以及发展趋势 一.计算机分类 计算机并非只有日常所…

并行计算 Clion配置使用OpenMP

文章目录配置CMakeList.txt文件OpenMP之HelloWorld数据共享属性shared子句private子句default子句default(shared)default(none)配置CMakeList.txt文件 文件底部加入以下内容&#xff0c;即可支持OpenMP FIND_PACKAGE(OpenMP REQUIRED) if (OPENMP_FOUND)message("OPENM…

STM32MP157驱动开发——Linux DAC驱动

STM32MP157驱动开发——Linux DAC驱动0.前言一、DAC 简介二、驱动源码分析1.设备树下的 DAC 节点2.驱动源码分析1&#xff09;stm32_dac 结构体2&#xff09;stm32_adc_probe 函数3&#xff09;stm32_dac_iio_info 结构体三、驱动开发1.修改设备树2.使能DAC驱动四、 运行测试0.…

读书笔记 -公司改造 和 紧迫感

读书笔记 -公司改造 - 三枝匡 读书笔记 -公司改造 - 三枝匡 2022 年夏天的时候在微信读书上读了这本书&#xff0c;这是我们 CSDN 的创始人蒋涛推荐的&#xff0c;当时记了一些笔记如下。 总结&#xff1a; 每个有一定的历史&#xff0c;比较成功、或者尚未非常成功的公司遇…

基于Java+SpringBoot+vue+element实现毕业就业招聘系统

基于JavaSpringBootvueelement实现毕业就业招聘系统 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码…

用最简单的案例带你掌握C++中各种指针

1、前言 指针&#xff0c;作为C/C中最神秘、功能最强大的语法&#xff0c;着实是难以理解 、难以掌握、难以运用。&#x1f625; 但是&#xff0c;能灵活的使用指针&#xff0c;对利用C/C开发程序将有很大的帮助&#xff0c;让我们一起来了解了解吧。 2、啥是指针&#xff1f…

参加《2022 中国开发者影响力盛典》我的 4 重收获!

感谢 CSDN 邀请&#xff0c;西红柿有幸参加了 2022 中国开发者影响力盛典暨 CSDN 企业生态汇&#xff0c;让我有了一个不虚此行的下午&#xff0c;也跟大家分享一下我在会上的 4 重收获吧~第一重收获&#xff1a;互联网圈大佬 会议聚焦开发者生态建设主题&#xff0c;分享了 CS…

分布式基础篇4 —— 基础篇完结

分类维护一、三级分类后端实现准备工作跨域问题关闭 ESLint 检查前端实现二、分类删除前端完善分类列表后端实现——删除配置发送请求代码片段前端实现——删除三、分类增加前端实现四、分类修改五、拖拽菜单拖拽效果实现拖拽数据收集拖拽功能完成拖拽功能完善六、批量删除品牌…

JS知识补充-JS原型链

概述JS原型链别名&#xff1a;隐式原型链作用&#xff1a;根据一定路径查找属性&#xff08;方法&#xff09;作用举例&#xff1a;我们定义一个构造函数Fn&#xff0c;使用此构造函数创建一个对象fn1&#xff0c;接着使用创建的对象fn1去调用toString方法并打印&#xff0c;我…

【阶段三】Python机器学习03篇:机器学习中的函数、机器学习中的梯度下降、机器学习的数据结构:张量与机器学习概率与统计基础

本篇的思维导图: 机器学习中的函数 函数描述了输入与输出的关系。在函数中,一个事物(输出)随着另一个(或一组)事物(输入)的变化而变化,如下图所示。 输入与输出的关系一般情况下,用x(或x1,x2,x3,…)表示输入,用y表示输出,并把它们叫作变量,…

Java设计模式中的设计原则/开闭原则、里氏代换原则和依赖倒转原则又是什么,怎么用

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 3.设计原则 3.1 目的 提高软件系统可维护性与可复用性增加软件可扩展性与灵活性节约开发成本与维护成本 3.2 开闭原则 3.2.1 特点 对扩展开放&#xff0c;对修…

实战干货|自研数据存储迁移MySQL实战

背景 最近公司内部在做某自研数据存储的下线工作&#xff0c;这里我们暂且化名其为DistributeSQL&#xff0c;由于DistributeSQL不再进行服务支持&#xff0c;需要迁移项目中使用到该存储到其他数据存储中。 本篇来聊聊这次在数据存储迁移过程中的方案设计思路、实现的大致细节…

中老年服装电商小程序开发

近年来&#xff0c;随着网络的发展&#xff0c;中老年服装电商小程序开发有了很大的进步。这种平台不仅可以方便用户购买到最新最时尚的产品&#xff0c;而且还能帮助商家提高销售业绩。 1&#xff1a;中老年服装电商小程序开发的优势 中老年人对商品信息需求大、容易接受新鲜…

实验⼀:Windows主机漏洞利⽤攻击实践

永恒之蓝简介 永恒之蓝&#xff08;Eternal Blue&#xff09;爆发于2017年4月14日晚&#xff0c;是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限&#xff0c;以此来控制被入侵的计算机。甚至于2017年5月12日&#xff0c; 不法分子通过改造“永恒之蓝”制作了wannacry…

【ROS】—— ROS重名问题(九)

文章目录前言1. ROS工作空间覆盖2. ROS节点名称重名2.1 rosrun设置命名空间与重映射2.1.1 rosrun设置命名空间2.1.2 rosrun名称重映射2.1.3 rosrun命名空间与名称重映射叠加2.2 launch文件设置命名空间与重映射2.3 编码设置命名空间与重映射2.3.1 重映射2.3.2 C 实现:命名空间3…

Maven基础学习——依赖配置(1):配置同一项目下的三个工程

依赖配置一、前言二、创建第一个工程三、新建第二个工程四、创建第三个工程五、配置1.每个工程的.xml文件2.文件配置六、结语一、前言 在讲述依赖配置时&#xff0c;需要使用实例来说明&#xff0c;在B站黑马课程&#xff08;第12小节&#xff09;中没有讲到如何配置基础的三个…

[Effective Objective] 熟悉Objective-C

了解 Objective-C Objective_C 是一种面向对象的语言。但与jave、C等语言不同&#xff0c;它使用了消息结构&#xff08;messaging structure&#xff09;而非函数调用&#xff08;function calling&#xff09;。Objective-C由Smalltalk演化而来&#xff0c;后者是消息语言的…

React 学习笔记总结(六)

文章目录1. redux 介绍2. redux 工作流程3. redux 的使用4. redux 完整结构补充5. redux的 异步action6. react-redux库 与 redux库7. react-redux库的 实战8. react-redux的connect 最精简写法9. react-redux的 Provider组件作用10. react-redux 整合UI组件 和 容器组件11. re…