牛客笔试训练

news2024/12/23 6:42:20

 牛客.过桥

在函数

 public static int n;
   public static  int[]arr=new int[2001];
    public static int bfs(){
        int left=1;
        int right=1;
        int ret=0;
        while(left<=right){
            ret++;
            int r=right;
            for(int i=left;i<=right;i++){
                r=Math.max(r,arr[i]+i);
                if(r>=n){
                    return ret;
                }
            }
            left=right+1;
            right=r;
        }
        return -1;
    }
    
    public  static void main(String[]args){
   Scanner in=new Scanner(System.in);
         n=in.nextInt();
        for(int i=1;i<=n;i++){
            arr[i]=in.nextInt();
        }
       
            System.out.println(bfs());

        
} 

不在函数中,

import java.util.*;
public class Main{
    public  static void main(String[]args){
      Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int[]a=new int[n+1];
        for(int i=1;i<=n;i++){
            a[i]=in.nextInt();
        }
        int left=1;
        int right=1;
        int flag=0;
        int sum=0;
//这个只是提供循环次数,说是具体作用,实则不大
        while(left<=right){
            int r=right;
            sum++;
//这块是规定范围,并且在范围内,准备更新新的右侧范围,因为i+a[i]是区间内能达到的最大值
            for(int i=left;i<=right;i++){
                if(r<i+a[i]){
                    r=i+a[i];
                }
            }
            if(r>=n){
                break;
            }
//left更新成right+1
            left=right+1;
//right更新成最新的r位置,下一次遍历就可以直接获取最大的位置了
            right=r;
            if(left>right){
                flag=1;
                break;
            }
        }

        if(flag==1){
            System.out.println(-1);
        }else{
            System.out.println(sum);
        }

} 
}

牛客.最大差值

正确答案

public int getDis (int[] A, int n) {
       int min=A[0];
       int max=0;
      for(int i=0;i<n;i++){
        //无论如何我们都是先找到最小值,然后不断的减去,来求最大值,而不是单纯的求最大值和最小值,这里面max代表的是最大差值
      min=Math.min(min,A[i]);
      max=Math.max(A[i]-min,max);
      }
      return max;
    }

时间过于复杂,于是研究了上面的操作 

public int getDis (int[] A, int n) {
       int sum=0;
      for(int a=0;a<n;a++){
        for(int b=a;b<n;b++){
            sum=Math.max(A[b]-A[a],sum);
        }
      }
      return sum;

    }

牛客.兑换零钱(一)(完全背包问题)

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 最少货币数
     * @param arr int整型一维数组 the array
     * @param aim int整型 the target
     * @return int整型
     */
    public int minMoney (int[] arr, int aim) {
       int n=arr.length;
       //dp表,动态规划:[0,i]位置组成总和为j的最小质数.
       int[][]dp=new int[n+1][aim+1];
       for(int i=0;i<=aim;i++){
            dp[0][i]=0x3f3f3f3f;
        }
        
         dp[0][0]=0;
       if(aim==0){
        return 0;
       }
       for(int i=1;i<=n;i++){
        for(int j=1;j<=aim;j++){
            dp[i][j]=dp[i-1][j];
        if(j-arr[i-1]>=0){
        dp[i][j]=Math.min(dp[i][j-arr[i-1]]+1,dp[i-1][j]);
          }
        }
       }
       if(dp[n][aim]==0x3f3f3f3f){
        return -1;
       }
       return dp[n][aim];
    }
}

牛客.循环汉诺塔

代码实现很容易,要看图

往下就可以找到规律了,至于为什么最开始那两个不一样,是因为最开始的x和1是相同的,我们要以大多数情况为基准

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

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

相关文章

网络原理 TCP与UDP协议

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 1.应用层 之前编写完了基本的 java socket &#xff0c;要知道&#xff0c;我们之前所写的所有代码都在应⽤层&#xff0c;都是为了 完成某项…

关键点检测——HRNet源码解析篇

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;专栏推荐&#xff1a;深度学习网络原理与实战 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞&#x1f44d;&#x1f3fc;、…

linux下部署数据库总结

数据库 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 关系型数据库&#xff0c;是建立在关系模型基础上的数据库&#xff0c;其借助于集合代数等数学概念和方法来处理数据库 中的数据主流的 MySQL、Oracle、MS SQL Server 和 DB2 都属于这类传统数据库。 NoSQ…

JVM理论篇(一)

一、类加载子系统 1.1 类加载子系统作用 类加载子系统负责从文件系统或者网络中加载Class文件&#xff0c;Class文件在文件开头有特定的文件标识。(CAFEBABE)ClassLoader只负责class文件的加载&#xff0c;至于它是否可以运行&#xff0c;则由Execution Engine 执行引擎决定。…

Spire.PDF for .NET【文档操作】演示:创建标记的 PDF 文档

带标签的 PDF&#xff08;也称为 PDF/UA&#xff09;是一种包含底层标签树&#xff08;类似于 HTML&#xff09;的 PDF&#xff0c;用于定义文档的结构。这些标签可以帮助屏幕阅读器浏览整个文档而不会丢失任何信息。本文介绍如何使用Spire.PDF for .NET在 C# 和 VB.NET 中从头…

Python中csv文件的操作3

在《Python中csv文件的操作2》中提到&#xff0c;with as语句可以自动关闭文件&#xff0c;而该语句可以和csv模块中的函数配合使用&#xff0c;达到读取和写入csv文件的目的。 1 csv文件的读取 使用csv模块中的函数读取csv文件的代码如图1所示。 图1 使用csv模块中的函数读取…

AI终于杀死了Leetcode!网友:面试神器已到位

家人们&#xff0c;今早起来 x 上一个帖子引起了奶茶的注意&#xff1a; 什么&#xff1f;奶茶以为自己没睡醒&#xff0c;揉了揉眼睛一看&#xff0c;没看错的话&#xff0c;这不就是AI结束了比赛吗。。。。 原文链接&#xff1a; https://www.reddit.com/r/leetcode/comments…

【ES6新特性】ES6新特性中Promise对象的概念,Async函数的使用以及Module语法

目录 1.Promise 对象 1.1 概念 1.2 使用 2.Async函数 2.1 同步和异步的区别 3.Mdule语法 1.Promise 对象 1.1 概念 Promise 是异步编程的一种解决方案&#xff0c;简单说就是一个容器&#xff0c;里面保存着某个未来才会结束 的事件&#xff08;通常是一个异步操作&#…

初识QT:从创建到认识

QT怎么安装这里就不说了&#xff0c;直接从使用开始 文章目录 1.QT项目的创建及介绍2.Hello QT&#xff01;2.1 图形化形式创建2.2 代码形式创建 3.对象树3.1 内存泄漏与对象树3.2 通过C类理解释放过程 4.乱码问题4.1 如何查看编码方式4.2 如何处理乱码 提示&#xff1a;QT项目…

arm 指令移位操作(11)

逻辑左移&#xff1a; 可以使寄存器也可以是 立即数 LSL &#xff1a; 字母缩写 举例&#xff1a; MOV R0&#xff0c;R1 &#xff0c;LSL #2 向左移位后&#xff0c;右面填0补充 逻辑右移&#xff1a; 可以使寄存器也可以是 立即数 LSR &#xff1a; 字母缩写 举例&…

10天速通Tkinter库——Day7:主菜单及图鉴

本篇博客我将介绍Tkinter实践项目《植物杂交实验室》中的杂交实验室主菜单、基础植物图鉴、杂交植物图鉴、杂交植物更多信息四个页面的制作。 它们作为主窗口的子页面实例&#xff0c;除了继承主窗口的基础设置&#xff08;如图标、标题、尺寸等等&#xff09;、还可以使用主窗…

《黑神话:悟空》游戏中的福建元素

《黑神话&#xff1a;悟空》作为一款深受玩家喜爱的动作角色扮演游戏&#xff0c;不仅在游戏剧情和角色设计上独具匠心&#xff0c;还巧妙地融入了丰富的中国传统文化元素&#xff0c;其中福建元素尤为突出。以下是对游戏中福建元素的详细解析&#xff1a; 一、地域文化与背景…

《机器学习》—— 支持向量机(SVM)实现二分类问题

文章目录 一、什么是支持向量机&#xff08;SVM&#xff09;1、SVM两个基本概念2、SVM的原理 二、示例&#xff1a;支持向量机&#xff08;SVM&#xff09;实现二分类问题1、先选取两个特征&#xff0c;并进行可视化2、选取所有的特征传入模型&#xff0c;并对模型进行评估 一、…

回归预测|基于北方苍鹰优化核极限学习机的数据预测Matlab程序NGO-KELM 多特征输入单输出

回归预测|基于北方苍鹰优化核极限学习机的数据预测Matlab程序NGO-KELM 多特征输入单输出 文章目录 一、基本原理1. 基本原理核极限学习机&#xff08;KELM&#xff09; 2. NGO-KELM回归预测流程1. 数据预处理2. 核极限学习机&#xff08;KELM&#xff09;模型构建3. 北方苍鹰优…

【Tomcat+MySQL+Redis源码安装三件套】

TomcatMySQLRedis源码安装三件套 Tomcat部分概念Tomcat的作用Tomcat的原理Linux运维中的应用场景具体操作示例 基本使用流程实验Tomcat安装tomcat的反向代理及负载均衡源地址hash(不能负载)tomcat负载均衡实现&#xff08;使用cookie&#xff09; memcached 操作命令 理论补充结…

大数据系统测试——大数据系统解析(上)

各位好&#xff0c;我是 道普云 欢迎关注我的主页 希望这篇文章对想提高软件测试水平的你有所帮助。 在本文中我们一起来看一下大数据系统每一个层次需要解决的技术问题和对应的一些技术需求。以此来作为学习大数据系统测试的基础。 数据收集层主要是进行数据源的分布式、…

sqli-labs靶场通关攻略 31-35

主页有sqli-labs靶场通关攻略 1-30 第三一关 less-31 闭合方式为?id1&id1 ") -- 步骤一&#xff1a;查看数据库名 http://127.0.0.1/less-31/?id1&id-1%22)%20union%20select%201,database(),3%20-- 步骤二&#xff1a;查看表名 http://127.0.0.1/less-31/?…

Redis 实现哨兵模式

目录 1 哨兵模式介绍 1.1 什么是哨兵模式 1.2 sentinel中的三个定时任务 2 配置哨兵 2.1 实验环境 2.2 实现哨兵的三条参数&#xff1a; 2.3 修改配置文件 2.3.1 MASTER 2.3.2 SLAVE 2.4 将 sentinel 进行备份 2.5 开启哨兵模式 2.6 故障模拟 3 在整个架构中可能会出现的问题 …

【FastAPI】—— 01 创建FastAPI项目

1.FastAPI框架介绍 FastAPI是⼀个现代、快速&#xff08;⾼性能&#xff09;的Web框架&#xff0c;⽤于构建API。是建⽴在Starlette和Pydantic基础上的。它基于Python3.7的类型提示&#xff08;typehints&#xff09;和异步编程&#xff08;asyncio&#xff09;能⼒&#xff0c…

软件设计原则之开闭原则

开闭原则&#xff08;Open-Closed Principle, OCP&#xff09;是软件设计中的一个重要原则&#xff0c;由伯特兰梅耶&#xff08;Bertrand Meyer&#xff09;在1988年提出。该原则强调软件实体&#xff08;如类、模块、函数等&#xff09;应该对扩展开放&#xff0c;对修改关闭…