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

华为OD机试真题 Java 实现【水库蓄水问题】

前言

博主刷的华为机考题,代码仅供参考,因为没有后台数据,可能有没考虑到的情况

如果感觉对你有帮助,请点点关注点点赞吧,谢谢你!

题目描述

思路        

1. 其实就是找一个最大的水坑,两个边界中不能有比边界高的

2. 双指针:l=0,r=s.lenght-1,求中间的蓄水量,如果中间有更高的之久就返回-1

3.求中间的蓄水量

代码

import java.util.Arrays;
import java.util.Scanner;// 1 8 6 2 5 4 8 3 7
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);Integer[] nums = Arrays.stream(sc.nextLine().split(" ")).map(Integer::parseInt).toArray(Integer[]::new);int l=0,r=nums.length-1;int ll=l,rr=r,max=0;while(l<r-1){int maxNum=getNum(nums,l,r);if(maxNum>=max){max=maxNum;ll=l;rr=r;}if(nums[l]<nums[r]){l++;}else{r--;}}if(max==0)System.out.println(0);else System.out.println(ll+" "+rr+":"+max);}private static int getNum(Integer[] nums,int l,int r) {int height = 0;int min = Math.min(nums[l], nums[r]);for (int i = l+1; i <= r-1; i++) {if(nums[i]<min){height+=min-nums[i];}else{return -1;}}return height;}
}

相关文章:

  • 杭电oj(1180、1181)题解
  • 【算法应用】基于鲸鱼优化算法WOA求解VRPTW问题
  • 《缓存策略:移动应用网络请求的“效能密钥” 》
  • 【数据库】四种连表查询:内连接,外连接,左连接,右连接
  • 文章三《机器学习基础概念与框架实践》
  • 【Android】Intent
  • LeetCode 560. 和为 K 的子数组 | 前缀和与哈希表的巧妙应用
  • LeetCode算法题 (移除链表元素)Day15!!!C/C++
  • 如何在linux服务器下载gitee上的模型
  • 开启 Spring AI 之旅:从入门到实战
  • 开发规范-Restful
  • Linux 常用命令 - tar【归档与压缩】
  • C++负载均衡远程调用学习之UDP SERVER功能
  • MATLAB技巧——norm和vecnorm两个函数讲解与辨析
  • 组件通信-$attrs
  • 重构编程范式:解码字节跳动 AI 原生 IDE Trae 的技术哲学与实践价值
  • 数据结构学习之算法复杂度
  • 2025大模型安全研究十大框架合集(10份)
  • C++之类和对象基础
  • 微服务中组件扫描(ComponentScan)的工作原理
  • 上海明后天将迎强风大雨,陆地最大阵风7~9级
  • 金融监管总局:正在修订并购贷款管理办法,将进一步释放并购贷款的潜力
  • 博裕基金拟收购“全球店王”北京SKP最多45%股权
  • 青岛双星名人集团董事长发公开信称家人逼迫交出管理权?公司回应
  • 新闻分析:电影关税能“让好莱坞再次伟大”?
  • 马上评|比起奇葩论文,更可怕的是“水刊”灰产