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

2023-05-04 LeetCode每日一题(摘水果)

2023-05-04每日一题

一、题目编号

2106. 摘水果

二、题目链接

点击跳转到题目位置

三、题目描述

在一个无限的 x 坐标轴上,有许多水果分布在其中某些位置。给你一个二维整数数组 fruits ,其中 fruits[i] = [positioni, amounti] 表示共有 amounti 个水果放置在 positioni 上。fruits 已经按 positioni 升序排列 ,每个 positioni 互不相同 。

另给你两个整数 startPos 和 k 。最初,你位于 startPos 。从任何位置,你可以选择 向左或者向右 走。在 x 轴上每移动 一个单位 ,就记作 一步 。你总共可以走 最多 k 步。你每达到一个位置,都会摘掉全部的水果,水果也将从该位置消失(不会再生)。

返回你可以摘到水果的 最大总数 。

四、解题代码

class Solution {
public:int maxTotalFruits(vector<vector<int>>& fruits, int startPos, int k) {int n = fruits.size();long long sum[400010];memset(sum, 0, sizeof(sum));for(int i = 0; i < n; ++i){sum[fruits[i][0]] = fruits[i][1]; }for(int i = 1; i <= 200000; ++i){sum[i] += sum[i-1];}if(startPos == 0){return sum[min(200000, k)];}long long max0 = 0;for(int i = 0; i <= k; ++i){if(i == startPos){max0 = max(max0 ,sum[max(startPos, startPos - 2 * i + k)]);} else if(i < startPos){max0 = max(max0, sum[max(startPos, startPos - 2 * i + k )] - sum[startPos - i - 1]);}if(startPos + i <= 200000){if(max(k - 2 * i, 0) >= startPos){max0 = max(sum[startPos + i], max0);} else{max0 = max(max0, sum[startPos + i] - sum[startPos - max(k - 2 * i, 0) - 1]);     }}}return max0;}
};

五、解题思路

(1) 首先我们思考能走多少步,设步数为i。我们很容易可以根据题目来知晓,这个步数为0 ~ k。

(2) 那我们将问题转化成,我们该如何规划这i步,使得摘到的水果最多。我们根据贪心的原理可以很容易知晓,我们应该尽可能的利用上我们的步数。那么我们的问题就转化成一开始是往右走,还是一开始往左走。

(3) 这样我们可以根据往左走或者往右走的步数,规划出一个窗口。计算出该窗口中水果的数目,只要取水果数目最大的窗口即为最终的答案。

(4) 最后我们只需要用前缀和来求出遍历到的每一个窗口中水果的数目即可。

http://www.lryc.cn/news/66739.html

相关文章:

  • [工具]Pytorch-lightning的使用
  • 互联网摸鱼日报(2023-05-09)
  • MySQL常见的存储引擎
  • 迅为i.MX6ULL开发板生成 KEY 文件,并安装
  • 常见舆情监测系统的分类和特点
  • 联合群美叶彦文:坚持,只要有一口气,能坚持多久,就坚持多久
  • 动态规划的学习
  • 计算机网络:HTTPS
  • 数据库系列-什么是 JDBC?它的作用是什么?
  • C++学习day--08 数组和字符串
  • 系统分析师之系统测试与维护(十六)
  • 板材激光切割机切割穿孔时注意的几个问题
  • 奶爸式Swagger教学
  • 入门级的家用洗地机怎么样?入门级洗地机推荐
  • 【面试】Java 反射机制(常见面试题)
  • JavaScript最佳实践
  • 景23转债,海能转债上市价格预测
  • TDengine 部署与使用----时序数据库
  • ShardingSphere系列四(Sharding-JDBC内核原理及核心源码解析)
  • 【2023】华为OD机试真题全语言-题目0234-字符串重新排列
  • Springboot +Flowable,三种常见网关的使用(排他、并行、包容网关)(一)
  • 软考高项(一)信息化发展 ★重点集萃★
  • 大项目准备(2)
  • 计算机网络【2】 子网掩码
  • linux发行家族和发行版及安装软件方式
  • FE_Vue学习笔记 条件渲染[v-show v-if] 列表渲染[v-for] 列表过滤 列表排序
  • 基于C++实现旅行线路设计
  • Lenovo m93 mini 电脑 Hackintosh 黑苹果efi引导文件
  • 【论文阅读】COPA:验证针对中毒攻击的离线强化学习的稳健策略
  • Java笔记_18(IO流)