问题

小美是美团仓库的管理员,她会根据单据的要求按顺序取出仓库中的货物,每取出一件货物后会把剩余货物重新堆放,使得自己方便查找。已知货物入库的时候是按顺序堆放在一起的。如果小美取出其中一件货物,则会把货物所在的一堆物品以取出的货物为界分成两堆,这样可以保证货物局部的顺序不变。
已知货物最初是按 1~n 的顺序堆放的,每件货物的重量为 w[i] ,小美会根据单据依次不放回的取出货物。请问根据上述操作,小美每取出一件货物之后,重量和最大的一堆货物重量是多少?

分析

首先有一个疑问,这样做真的能方便货物的查找吗?
我们换一种说法来帮助理解此题目。有一个整数数组,给出一个下标将数组分成2个子数组,分别求出各子数组元素和,找到元素和最大的子数组,重复上述操作,如下图:

  • 下标4,子数组最大元素和sum=9
  • 下标2,子数组最大元素和sum=4
  • 下标3,子数组最大元素和sum=3
  • 下标1,子数组最大元素和sum=1
  • 下标0,子数组最大元素和sum=0

代码及解析

  public void manage(int[] weights, int[] nums) {int maxSum = Integer.MIN_VALUE;for (int i = 0; i < nums.length; i++) {// 判断是否需要计算"最大货堆重量和",减少计算量提升运行效率boolean needSum = needSum(weights, nums[i] - 1, maxSum);// 重量设置为0表示取出货物weights[nums[i] - 1] = 0;// 如果待取出货物的在"最大货堆"内,"最大货堆"将被分割,则需要重新计算"最大货堆重量和";// 否则"最大货堆重量和"不变,不需要计算maxSum = needSum ? maxSum(weights) : maxSum;System.out.println(maxSum);}}/*** 是否需要计算"最大货堆重量和"** @param weights* @param index* @param maxSum* @return*/private boolean needSum(int[] weights, int index, int maxSum) {// 初始需要计算"最大货堆重量和"if (maxSum == Integer.MIN_VALUE) return true;int left = index - 1, right = index + 1, currSum = weights[index];// 计算待取出货物的"货堆的重量和"currSumwhile (left >= 0 || right < weights.length) {if (left >= 0) {// 到了"货堆"的左边界,停止向左计算if (weights[left] == 0) left = -1;else currSum += weights[left--];}if (right < weights.length) {// 到了"货堆"的右边界,停止向右计算if (weights[right] == 0) right = weights.length;else currSum += weights[right++];}}// 如果待取出货物的在"最大货堆"内,"最大货堆"将被分割,则需要重新计算"最大货堆重量和"return currSum == maxSum;}/*** 计算"最大货堆重量和"** @param weights* @return*/private int maxSum(int[] weights) {int maxSum = 0, temp = 0;for (int j = 0; j < weights.length; j++) {// weights[j]==0表示到达了"货堆"边界,需要计算新"货堆重量和"temp = weights[j] == 0 ? 0 : temp + weights[j];maxSum = Math.max(maxSum, temp);}return maxSum;}

美团2021届秋季校园招聘笔试真题解析:小美的跑腿代购

题目来自力扣

美团2021届秋季校园招聘笔试真题解析:小美的仓库整理相关推荐

  1. 美团2021届秋季校园招聘笔试真题解析:小团的复制粘贴

    问题 小团是一个莫得感情的 CtrlCV 大师,他有一个下标从 1 开始的序列 A 和一个初始全部为 -1 序列 B ,两个序列的长度都是 n .他会进行若干次操作,每一次操作,他都会选择 A 序列中 ...

  2. 美团 2021 届秋季校园招聘—偏爱字母(转化+动态规划)

    题目链接:偏爱字母 \qquad 小美喜欢字母 E ,讨厌字母 F .在小美生日时,小团送了小美一个仅包含字母 E 和 F 的字符串,小美想从中选出一个包含字母 E 数量与字母 F 数量之差最大的子串 ...

  3. tcl c语言笔试题,TCL2014校园招聘笔试真题及答案

    1.ADO.net中常用的对象有哪些?分别描述一下. 答:Connection数据库连接对象Command数据库命令DataReader数据读取 器DataSet数据集 2.什么是code-Behin ...

  4. 齐商银行计算机岗面试题,2018齐商银行社会招聘笔试(真题笔经)

    原标题:2018齐商银行社会招聘笔试(真题笔经) [中公金融人银行招聘网]提醒:2018齐商银行社会招聘笔试考试内容真题演练见以下正文.中公金融人为考生提供最新银行招聘时间预测.齐商银行招聘公告报考条 ...

  5. 2019年字节跳动2020届秋招在线笔试真题(后端开发工程师)

    2019年字节跳动2020届秋招在线笔试真题(后端开发工程师) 第一题 第二题 第三题 第四题 第一题 第二题 第三题 第四题 字节跳动的题,对于我这个菜鸟来说确实很难,对一半都做不到.还得继续努力啊 ...

  6. 在现代意义上的电子计算机还未出现,2013年青海政法干警笔试真题解析:言语分析(7)...

    2013年青海政法干警笔试真题解析:言语分析(7) A+ A- 2013-09-22 11:17  |  青海人事考试网  |  责编:admin 评论 点击收藏 51.在现代意义上的电子计算机还未出 ...

  7. 搜狗2016校园招聘之编程题解析-大数据开发

    搜狗2016校园招聘之编程题解析-大数据开发 解题思路: 使用JDK中的Point2D类,该类定义了坐标系空间中的一个点 Point2D是一个抽象类,但是在该类内部定义了静态的Double类,并且Do ...

  8. 蓝桥杯到底难不难?(内附第11届省赛+国赛真题解析)

    前几天有粉丝留言蓝桥杯的事,刚好猪哥之前也参加过,就想和大家聊聊关于蓝桥杯的那些事! 今天猪哥会讲讲之前自己为什么参加蓝桥杯,拿到的成绩,以及讲解去年的真题,让大家感受一下真实比赛题目难度! 文章目录 ...

  9. 笔试真题解析 | 4.15携程实习笔试三道编程题

    恭喜发现宝藏!搜索公众号[TechGuide]回复公司名,解锁更多新鲜好文和互联网大厂的笔经面经. 作者@TechGuide[全网同名] 订阅专栏[进阶版]2023最新大厂笔试真题 & 题解, ...

  10. 笔试真题解析分享|小红书3.26第三题解题思路

    题目内容 (题目内容改编自群友分享内容) 塔子哥最近学会了一种新的排序算法:X排序. X排序算法的描述如下:首先,算法需要按某种规则选择该数列上至多X个位置,将其对应的数抽出来,其他的数都往左对齐,之 ...

最新文章

  1. 大宗商品(Bulk Stock)交易
  2. 边缘计算 — 边缘网络
  3. python零基础怎么学-零基础python入门分析,如何做到一个月学会(深思极恐)
  4. (剑指Offer)面试题18:树的子结构
  5. gentoo doc web site
  6. 微信订阅号开发笔记(三)
  7. 给C#开发者的代码审查清单
  8. Linux下crontab乱码,Linux下crontab自动运行Java程序乱码解决方案
  9. 计算机网络物理层知识要点:通信基础、传输介质和设备
  10. 四个程序员恋爱必学的聊天知识点!
  11. STM32工作笔记002---STM32初探-概述
  12. Python第三方库使用 —— PIL
  13. Core Servlets and JSP Volume I 读后感 Servlet(三)
  14. 学神经网络需要什么基础,神经网络从入门到精通
  15. Java代码常见错误写法
  16. Win10代理自动打开无法永久关闭的问题排查和如何解决
  17. 服务器带宽上行与下行是什么意思,有什么区别
  18. combo 技术简单介绍
  19. Java 获取当前服务器公网IP
  20. flowable相关的一些名词说明

热门文章

  1. 2.1 Apache Hadoop、HDFS - Apache Hadoop概述
  2. ltp测试操作步详解(压力测试网站最详、下载、使用)
  3. 优家益购——JavaWeb项目(Jsp+Servlet+MySQL+tomcat)
  4. nssl 1336.膜拜神牛 {LIS}
  5. vnc远程桌面,vnc远程桌面使用教程图解
  6. 20个值得一看的 JS 代码简写片段
  7. 数据湖 Iceberg 在网易云音乐的实践
  8. 高斯消元求解四种方程组
  9. [渝粤教育] 盐城工学院 材料物理性能 参考 资料
  10. python基本写法_python操作文件常用写法