当前位置: 首页 > wzjs >正文

网站导航栏全屏怎么做的十种营销方法

网站导航栏全屏怎么做的,十种营销方法,软件开发者怎么赚钱,注册一个商标多少钱2025 B卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

在这里插入图片描述

2025 B卷 200分 题型

本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》

华为OD机试真题《荒岛求生》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C

GO

更多内容


题目名称:荒岛求生


  • 知识点:栈操作(贪心算法)、逻辑处理
  • 时间限制:1秒
  • 空间限制:256MB
  • 限定语言:不限

题目描述

一个荒岛上有若干人,岛上只有一条路通往岛屿两端的港口(左港口和右港口)。所有人以相同速度逃生,方向分为向左(负数)或向右(正数),其绝对值表示体力值。若两人相遇(即一个向右的人与一个向左的人路径重叠),则进行决斗:

  • 体力值大的一方存活,但体力值减少对方体力值的绝对值;
  • 若体力值相同,则同归于尽(双方均淘汰)。
    最终存活的人可从两端港口逃生,求逃生总人数。

输入描述
一行非零整数,用空格分隔,正数表示向右逃生,负数表示向左逃生。数组长度不超过30000。

输出描述
一个整数,表示最终逃生人数。

示例
输入:5 10 8 -8 -5
输出:2
说明:

  • 8-8同归于尽;
  • 10击败-5后剩余体力5
  • 最终存活[5, 5],均从右港口逃生,输出2

Java

问题分析

人们在一个荒岛逃生,方向分为左右(正负),体力值由绝对值表示。当两人相遇(向右遇到向左)时,体力大者存活但减少对方体力值,相等则同归于尽。最终存活的人从两端港口逃生,求总人数。


解题思路

  1. 栈处理向右的人:向右的人压入栈,向左的人与栈顶决斗。
  2. 决斗规则
    • 栈顶体力大:栈顶减少对方体力,存活。
    • 相等:栈顶弹出,同归于尽。
    • 栈顶体力小:弹出栈顶,继续与下一个栈顶决斗。
  3. 存活统计:栈内剩余为右港口逃生人数,未击败的向左人数为左港口逃生人数。

代码实现

import java.util.ArrayDeque;
import java.util.Deque;public class Main {public static void main(String[] args) {// 示例测试int[] example1 = {5, 10, 8, -8, -5};System.out.println(escapeCount(example1)); // 输出2int[] example2 = {3, -5};System.out.println(escapeCount(example2)); // 输出1int[] example3 = {-3, -4, 2};System.out.println(escapeCount(example3)); // 输出2}public static int escapeCount(int[] people) {Deque<Integer> stack = new ArrayDeque<>(); // 保存向右逃生的人int leftSurvivors = 0; // 左港口逃生人数for (int num : people) {if (num > 0) {stack.push(num); // 向右的人直接入栈} else {int k = -num; // 当前向左逃生者的体力while (k > 0) {if (stack.isEmpty()) {leftSurvivors++; // 栈空则左港口存活+1break;}int t = stack.pop(); // 取出栈顶向右的人if (t > k) {stack.push(t - k); // 栈顶体力减少k,存活k = 0; // 当前向左者被击败} else if (t == k) {k = 0; // 同归于尽} else {k -= t; // 继续与下一个栈顶决斗}}}}return stack.size() + leftSurvivors;}
}

代码详解

  1. 栈初始化Deque<Integer> stack保存向右逃生的人。
  2. 遍历处理每个人
    • 向右的人:直接压入栈。
    • 向左的人
      • k为体力绝对值,循环处理栈顶元素。
      • 栈空则左港口存活+1。
      • 栈顶大于k:栈顶存活,体力减少k
      • 栈顶等于k:同归于尽。
      • 栈顶小于k:继续处理下一个栈顶。
  3. 返回结果:栈的大小(右港口)加左港口存活人数。

示例测试

  1. 示例1[5,10,8,-8,-5]

    • 8-8同归于尽,10击败-5变为5
    • 右港口存活[5,5],输出2
  2. 示例2[3,-5]

    • 3-5击败,左港口存活1,输出1
  3. 示例3[-3,-4,2]

    • -3-4左港口存活,2右港口存活,输出3

综合分析

  1. 时间复杂度:O(N),每个元素最多入栈和出栈一次。
  2. 空间复杂度:O(N),栈空间最坏保存所有向右的人。
  3. 正确性
    • 栈处理保证所有相遇的向右和向左的人正确决斗。
    • 左港口存活人数统计未被击败的向左者。
  4. 适用性:高效处理大规模数据(3万元素)。

python

问题分析

人们在荒岛上逃生,方向分为左右(正数为右,负数为左),体力值为绝对值。相遇时决斗规则:体力大者存活并减少对方体力值,相等则同归于尽。求最终存活人数。


解题思路

  1. 栈处理向右的人:向右的人存入栈中。
  2. 处理向左的人:向左的人依次与栈顶元素决斗,直到击败对方或栈空。
  3. 存活统计:栈内剩余为右港口逃生者,未被击败的向左人数为左港口逃生者。

代码实现

def escape_count(people):stack = []  # 保存向右逃生的人left_survivors = 0
http://www.dtcms.com/wzjs/6609.html

相关文章:

  • 广宁城乡建设网站什么是网络整合营销
  • 响应式网站用什么技术做金华关键词优化平台
  • 张家港哪家做企业网站最近热点新闻事件
  • 三一重工的网站是哪家做的东莞网站开发公司
  • 天津企业网站建设公司网页设计与网站开发
  • 网站开发需要什么费用定制建站网站建设
  • 商城网站建设高端站长统计在线观看
  • 南京网站优化长沙seo霸屏
  • 南宁做网站找哪家好竞价托管怎么做
  • 变装app制作教程搜索引擎优化网站排名
  • 郑州市建设信息网站郑州seo课程
  • 观看b站频道视频的注意事项郑州网站优化顾问
  • 做网站有视频教吗自己创建个人免费网站
  • 专业做调查的网站域名被墙查询检测
  • 济宁市城市建设局网站销售人员培训课程有哪些
  • 哪些网站可以做团购自动外链发布工具
  • 北京装饰公司前十名站长工具seo综合查询是什么
  • 分类目录不要前缀wordpress百度有专做优化的没
  • 南宁企业网站建设技术公司什么是sem推广
  • 网站建设现在主要做些什么整站seo
  • 小说网站建立网上如何做广告
  • 网站注册时间查询steam交易链接怎么改
  • 哪些做调查问卷挣钱的网站上海seo搜索优化
  • 新余公司做网站2024年3月新冠高峰
  • 还有用的网站网络卖货平台有哪些
  • 网站建设公司上海做网站公司抖音关键词用户搜索排名靠前
  • 做网站用什么软件免费seo黑帽多久入门
  • 青海西宁高端网站建设搜索引擎营销的实现方法有哪些
  • 用服务器如何做网站在线观看的seo综合查询
  • 网站建设公司不赚钱百度电商推广