【备战秋招】每日一题:2023.05-B卷-华为OD机试 - 阿里巴巴找黄金宝箱(IV)

news2024/11/19 21:15:40

2023大厂笔试模拟练习网站(含题解)
www.codefun2000.com
最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网大厂模拟练习题,还在极速更新中。欢迎关注公众号“塔子哥学算法”获取最新消息。

提交链接:

首页 - CodeFun2000

为了更好的阅读体检,可以查看OJ上的题解。进入提交链接,点击右边菜单栏的"查看塔子哥的题解"

题目描述

贫如洗的椎夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地,藏宝地有编号从0-N的箱子,每个箱子上面有一个数字,箱了排列成一个环,编号最大的箱子的下一个是编号为0的箱子。

请输出每个箱子贴的数字之后的第一个比它大的数,如果不存在则输出-1。

输入描述

输入一个数字字串,数字之间使用逗号分隔,例如: 1,2,3,1

  • 1 \leq字串中数字个数\leq10000:

  • -100000 \leq每个数字值\leq10000:

输出描述

下一个大的数列表,以逗号分隔,例如: 2,3,6,-1,6

样例

输入

2,5,2

输出

5,-1,5

说明

第一个2的下一个更大的数是5;

数字5找不到下一个更大的数;

第二个2的下一个最大的数需要循环搜索,结果也是5

输入

3,4,5,6,3

输出

4,5,6,-1,4

说明

Java算法源码

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.StringJoiner;
 
public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int[] arr = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
    System.out.println(getResult(arr));
  }
 
  public static String getResult(int[] arr) {
    LinkedList<int[]> stack = new LinkedList<>();
 
    int[] res = new int[arr.length];
    Arrays.fill(res, -1);
 
    findNextBig(arr, stack, res);
 
    if (stack.size() != 1) findNextBig(arr, stack, res);
 
    StringJoiner sj = new StringJoiner(",");
    for (int v : res) {
      sj.add(v + "");
    }
    return sj.toString();
  }
 
  public static void findNextBig(int[] arr, LinkedList<int[]> stack, int[] res) {
    for (int i = 0; i < arr.length; i++) {
      int ele = arr[i];
      while (true) {
        if (stack.size() == 0) {
          stack.add(new int[] {ele, i});
          break;
        } else {
          int[] peek = stack.get(stack.size() - 1);
          int peekEle = peek[0];
          int peekIdx = peek[1];
 
          if (ele > peekEle) {
            res[peekIdx] = ele;
            stack.removeLast();
          } else {
            stack.add(new int[] {ele, i});
            break;
          }
        }
      }
    }
  }
}

JS算法源码

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");
 
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});
 
rl.on("line", (line) => {
  const arr = line.split(",").map(Number);
  console.log(getResult(arr));
});
 
function getResult(arr) {
  const stack = [];
  const res = new Array(arr.length).fill(-1);
 
  findNextBig(arr, stack, res);
 
  if (stack.length != 1) findNextBig(arr, stack, res);
 
  return res.join(",");
}
 
function findNextBig(arr, stack, res) {
  for (let i = 0; i < arr.length; i++) {
    const ele = arr[i];
 
    while (true) {
      if (stack.length == 0) {
        stack.push([ele, i]);
        break;
      } else {
        const [peekEle, peekIdx] = stack.at(-1);
 
        if (ele > peekEle) {
          res[peekIdx] = ele;
          stack.pop();
        } else {
          stack.push([ele, i]);
          break;
        }
      }
    }
  }
}

Python算法源码

# 输入获取
arr = list(map(int, input().split(",")))
 
 
def findNextBig(arr, stack, res):
    for i in range(len(arr)):
        ele = arr[i]
 
        while True:
            if len(stack) == 0:
                stack.append([ele, i])
                break
            else:
                peekEle, peekIdx = stack[-1]
 
                if ele > peekEle:
                    res[peekIdx] = ele
                    stack.pop()
                else:
                    stack.append([ele, i])
                    break
 
 
# 算法入口
def getResult():
    stack = []
    res = [-1] * len(arr)
 
    findNextBig(arr, stack, res)
 
    if len(stack) != 1:
        findNextBig(arr, stack, res)
 
    return ",".join(map(str, res))
 
 
# 算法调用
print(getResult())

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

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

相关文章

Computer Graphics From Scratch - Chapter 9

系列文章目录 简介&#xff1a;Computer Graphics From Scratch-《从零开始的计算机图形学》简介 第一章: Computer Graphics From Scratch - Chapter 1 介绍性概念 第二章&#xff1a;Computer Graphics From Scratch - Chapter 2 基本光线追踪 第三章&#xff1a;Computer Gr…

IEEE 最佳论文提名 | TraND:用步态算法优化身份识别

来源&#xff1a;投稿 作者&#xff1a;小灰灰 编辑&#xff1a;学姐 论文标题&#xff1a;TraND: Transferable Neighborhood Discovery for Unsupervised Cross-domain Gait Recognition 论文链接: https://arxiv.org/pdf/2102.04621v1.pdf 步态识别开始应用在公共场域身份…

centos mysql安装配置远程访问

包含以下三个部分&#xff1a;mysql安装&#xff0c;mysql密码重置、mysql配置远程访问。 一 centos安装mysql 1、wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 2、yum -y install mysql57-community-release-el7-10.noarch.rpm 3、yum…

to be delete

一、grafana版本升级 1.1 还是先跟着官网简单走一波 建议经常升级Grafana&#xff0c;以获取最新的修补程序和增强功能。 为了实现这一点&#xff0c;Grafana升级向后兼容&#xff0c;并且升级过程简单快捷。升级通常是安全的&#xff08;在许多次要版本和一个主要版本之间&a…

Python习题进阶

1.十六进制数字的大小 描述 计算的世界&#xff0c;除了二进制与十进制&#xff0c;使用最多的就是十六进制了&#xff0c;现在使用input读入一个十六进制的数字&#xff0c;输出它的十进制数字是多少&#xff1f; 输入描述&#xff1a; input读入一个十六进制数字&#xf…

微信支付服务商接入指引(企业)

目录 一、官方指引二、申请流程1.进入服务商平台2.填写资料3.账户验证&资料审核 三、登录 一、官方指引 https://kf.qq.com/faq/161220iqeAfA1612202yeURB.html 二、申请流程 1.进入服务商平台 https://pay.weixin.qq.com/static/partner_guide/service_provider.shtml…

【JVM快速入门篇】

本笔记内容为狂神说JVM快速入门篇部分 目录 一、JVM的位置 二、JVM体系结构 三、类加载器&#xff08;ClassLoader&#xff09; 四、双亲委派机制 双亲委派机制的作用 五、沙箱安全机制 六、Native ​编辑Native Method Stack 本机方法栈 Native Ilnterface本地接口…

低代码靠谱吗?实操一遍就知道了

一、前言 最近一段时间&#xff0c;“低代码”概念特别流行&#xff0c;有些人特别推崇它&#xff0c;也有些人对此不屑一顾。 推崇它的人认为&#xff0c;它有很多优点&#xff0c;比如说能够降低开发周期&#xff0c;提高系统开发效率&#xff0c;降低开发成本&#xff0c;学…

使用HBuilder将h5网站打包成app 自行打包

1、点击manifest.json&#xff0c;基础配置&#xff0c;APP名字&#xff0c;是否全面屏 2、然后点击图标配置&#xff0c;选好后点自动生成所有图标并替换 点击模块配置&#xff0c;选VideoPlayer和X5内核 然后顶部菜单选发行&#xff0c;选择原生App-云打包 选公测证书然后…

WPF教程-XAML介绍

XAML介绍 1.定义 为构建应用程序用户界面而创建的一种新的“可扩展应用程序标记语言”&#xff0c;提供一种便于扩展和定位的语法来定义和程序业务逻辑分离的用户界面。 XAML 是一种 XML&#xff08;Extensible Markup Language&#xff09;的扩展&#xff0c;XAML 是 WPF 中…

云计算——云计算与虚拟化的关系

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.虚拟化 1.什么是虚拟化 2.虚拟化技术作用 二.云计算与虚拟化的关系 三.虚…

一文让非技术宅读懂为什么AI更“喜欢”GPU而不是CPU?

一、引言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;深度学习等算法在图像识别、自然语言处理、数据挖掘等方面表现出了强大的能力。而这些算法的底层计算&#xff0c;往往对硬件有着极高的要求。为了满足这些需求&#xff0c;越来越多的研究和工程实…

关于不同型号电脑谷歌浏览器下载指定版本的方法(超详细教程)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1、根据链接打开地址2、页面说明3、下载过程&#xff08;1&#xff09;选中指定版本点击它&#xff08;这里以52.0.27.37.1为例&#xff09;&#xff08;2&…

美国访学博后答疑|尚未出国DS-2019表格过期了怎么办?

美国执J1签证者尚未出国&#xff0c;但DS-2019表格过期了怎么办&#xff1f;本篇知识人网老师就以下三种情况&#xff0c;统一做答疑建议。 美国访问学者和博士后的签证类型多是J1签证&#xff0c;需要由美国接收方将签字后的DS2019表邮寄给国内&#xff0c;申请者本人在表格正…

多项安全新功能为云上安全保驾护航,就在亚马逊云科技re:Inforce全球大会

亚马逊云科技re:Inforce 2023全球大会于当地时间2023年6月13日在美国加州安纳海姆拉开帷幕。在大会上&#xff0c;亚马逊云科技宣布推出十多项安全新服务及功能&#xff0c;下面就来一览本次大会的风采。 “Security is our top priority.” “安全是我们的首要优先级”&#…

Socket 传情:使用 Python 发送 GET 请求

文章目录 参考描述HTTPHTTP 报文HTTP 请求报文请求行请求头空行请求体 HTTP 响应报文状态行响应头空行响应体 HTTP 请求方法HTTP 与 TCP 协议HTTP 协议TCP 协议 httpbin.org socket 模块socket.socket()Socket().connect()Socket().send() 与 Socket().sendall()Socket().recv(…

AI实战营第二期 第十节 《MMagic 代码课》——笔记11

AI实战营第二期 第十节 《MMagic 代码课》 MMagic (Multimodal Advanced, Generative, and Intelligent Creation) 是一个供专业人工智能研究人员和机器学习工程师去处理、编辑和生成图像与视频的开源 AIGC 工具箱。 MMagic 允许研究人员和工程师使用最先进的预训练模型&…

wms add window 流程

二、WMS 窗口添加流程 /frameworks/base/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java boolean realStartActivityLocked(ActivityRecord r, WindowProcessController proc,boolean andResume, boolean checkConfig) throws RemoteException {.....…

ESP-C2模组 AT示例程序

ESP32C2 AT固件使用 ESP32 C2模组&#xff0c;如图1-1所示 图1-1 ESP32 C2模组 ESP32 C2开发板&#xff0c;如图1-2所示 图1-2 ESP32 C2开发 方案亮点 1、完整的 WiFi 子系统&#xff0c;符合 IEEE 802.11b/g/n 协议&#xff0c;具有 Station 模式、SoftAP 模式、SoftAP Stat…

2023电商运营课程培训课程干货

​电商运营是当今社会最为火热的词汇之一&#xff0c;在各个领域有着广泛的运用。各种途径的线上销售使得产品的销售以及品牌的推广变得更加容易&#xff0c;因此越来越多的人选择从事电商运营。而电商运营的成功离不开专业的培训&#xff0c;为此许多机构推出了电商运营课程培…