刷题记录|Day34● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果
创始人
2025-05-31 05:21:05
0

刷题记录|Day34● 1005.K次取反后最大化的数组和
● 134. 加油站
● 135. 分发糖果

● 1005.K次取反后最大化的数组和

题目描述

给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:

  • 选择某个下标 i 并将 nums[i] 替换为 -nums[i]

重复这个过程恰好 k 次。可以多次选择同一个下标 i

以这种方式修改数组后,返回数组 可能的最大和

示例 1:

输入:nums = [4,2,3], k = 1
输出:5
解释:选择下标 1 ,nums 变为 [4,-2,3] 。

示例 2:

输入:nums = [3,-1,0,2], k = 3
输出:6
解释:选择下标 (1, 2, 2) ,nums 变为 [3,1,0,2] 。

示例 3:

输入:nums = [2,-3,-1,5,-4], k = 2
输出:13
解释:选择下标 (1, 4) ,nums 变为 [2,3,-1,5,4] 。

提示:

  • 1 <= nums.length <= 104
  • -100 <= nums[i] <= 100
  • 1 <= k <= 104

解题思路

贪心的思路,局部最优:让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个数组和达到最大。
局部最优可以推出全局最优。
那么如果将负数都转变为正数了,K依然大于0,此时的问题是一个有序正整数序列,如何转变K次正负,让 数组和 达到最大。
那么又是一个贪心:局部最优:只找数值最小的正整数进行反转,当前数值和可以达到最大(例如正整数数组{5, 3, 1},反转1 得到-1 比 反转5得到的-5 大多了),全局最优:整个 数组和 达到最大。

这么一道简单题,就用了两次贪心!
那么本题的解题步骤为:

  • 第一步:将数组按照绝对值大小从大到小排序,注意要按照绝对值的大小
  • 第二步:从前向后遍历,遇到负数将其变为正数,同时K–
  • 第三步:如果K还大于0,那么反复转变数值最小的元素,将K用完
  • 第四步:求和
class Solution {
public:int largestSumAfterKNegations(vector& nums, int k) {sort(nums.begin(), nums.end(), [](int a, int b){return abs(a) > abs(b);});for(int &i : nums) {if (i < 0 && k > 0){i = -i;k--;}}if(k % 2 == 1) nums[nums.size() - 1] *=  -1;int result = 0;for( int i : nums) result += i;return result;}
};

134. 加油站

题目描述

在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。

你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。

给定两个整数数组 gascost ,如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。

示例 1:

输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]
输出: 3
解释:
从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油
开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油
开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油
开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油
开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油
开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。
因此,3 可为起始索引。

示例 2:

输入: gas = [2,3,4], cost = [3,4,3]
输出: -1
解释:
你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。
我们从 2 号加油站出发,可以获得 4 升汽油。 此时油箱有 = 0 + 4 = 4 升汽油
开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油
开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油
你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。
因此,无论怎样,你都不可能绕环路行驶一周。

提示:

  • gas.length == n
  • cost.length == n
  • 1 <= n <= 105
  • 0 <= gas[i], cost[i] <= 104

解题思路

class Solution {
public:int canCompleteCircuit(vector& gas, vector& cost) {int curSum = 0;int start = 0;int totalSum = 0;for (int i = 0; i< gas.size(); ++i){curSum += gas[i] - cost[i];totalSum += gas[i] - cost[i];if(curSum < 0) {curSum = 0;start = i+1;}}return totalSum < 0 ? -1 : start;}
};

135. 分发糖果

题目描述

n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。

你需要按照以下要求,给这些孩子分发糖果:

  • 每个孩子至少分配到 1 个糖果。
  • 相邻两个孩子评分更高的孩子会获得更多的糖果。

请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目

示例 1:

输入:ratings = [1,0,2]
输出:5
解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。

示例 2:

输入:ratings = [1,2,2]
输出:4
解释:你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。

提示:

  • n == ratings.length
  • 1 <= n <= 2 * 104
  • 0 <= ratings[i] <= 2 * 104

解题思路

本题采用了两次贪心的策略:

  • 一次是从左到右遍历,只比较右边孩子评分比左边大的情况。
  • 一次是从右到左遍历,只比较左边孩子评分比右边大的情况。

这样从局部最优推出了全局最优,即:相邻的孩子中,评分高的孩子获得更多的糖果。


class Solution {
public:int candy(vector& ratings) {vector candyVec(ratings.size(), 1);for(int i = 1; i< ratings.size(); ++i) {if(ratings[i] > ratings[i-1]) {candyVec[i] = candyVec[i - 1] + 1;}}for(int i = ratings.size()-2; i >= 0; i--) {if(ratings[i] > ratings[i+1]) {candyVec[i] = max(candyVec[i], candyVec[i + 1] + 1);}}int result = 0;for(int i: candyVec) {// cout<

相关内容

热门资讯

盘中突发,黄金首饰板块跳水!0... 1月29日,A股三大指数开盘涨跌不一。盘面上,贵金属、有色金属、石油、银行、培育钻石、民爆概念等板块...
天量存款到期调查:百万保单增加... 来源:@华夏时报微博 华夏时报记者 李明会 北京报道 “最近到期的定期存款可多了。”近日,某头部城...
原创 中... 1月17日,特朗普宣布成立加沙和平委员会,这场动静不小的宣布刚过了三天,中国便收到了美国的邀请函。然...
王府井:转型阵痛中主动求变 创... 2026年1月28日,王府井集团披露2025年度业绩预亏公告。公告内容显示,为应对零售行业市场变化,...
依旧是混沌期的高低切换加超跌轮... 大盘周四放量震荡收红,收盘4157.98点,成交32300亿,外资成交3972亿,板块上白酒,油气,...
海南大消息!融资客扫货8股 近日,海南省发展改革委印发《海南省2026年重大项目投资计划》。 1月29日,A股全天震荡分化,三...
国泰海通:白银价格中长期仍然受... 来源:智通财经网 国泰海通证券发布研报称,白银价格近期飙升创新高,主因“工业和金融”需求共振。其商品...
泰康基金老将卷入争议!科技股风... 作者 | 郑理 来源 | 独角金融 泰康基金管理有限公司(下称“泰康基金”)桂跃强,一位拥有14年金...
天晴了雨停了,孙正义又行了? 出品I下海fallsea 胡不知 2026年1月28日,一则消息炸穿了全球科技投资圈:软银集团正与...
净利腰斩、市值万亿,特斯拉在涨... 作者 | 定焦One 金玙璠 一边是净利润腰斩,一边是股价创新高。 这就是特斯拉2025年的状况。...
飞天茅台连日售罄,有人用外挂抢... 在需求大增且产品连日售罄的情况下,有人开始动用“外挂”抢飞天茅台。 1月29日,南都湾财社-酒水新消...
地球磁场或揭示暗物质真相,科学... 你有没有想过,宇宙中有那么多神秘的事物,而暗物质就是其中之一。它大约占据了我们宇宙的四分之一,但我们...
阳光诺和收购同一标的两次失败 ... 2026年1月27日,阳光诺和(688621.SH)发布公告,宣布正式终止以发行股份及可转换公司债券...
特宝生物:获得第九批国家级制造... 上证报中国证券网讯(叶子申 记者 俞立严)1月29日,特宝生物发布公告称,公司近日获得工业和信息化部...
002231,拟终止上市,明天... 1月29日晚,*ST奥维(002231)发布公告,披露2025年度业绩预告,公司不仅面临全年持续亏损...
半导体设备板块震荡调整,指数跌... 截至收盘,中证云计算与大数据主题指数上涨0.4%,中证芯片产业指数下跌4.1%,中证半导体材料设备主...
7 个月 5 个人工智能 IP... 自 2025 年底至 2026 年初的短短 10 天内,启明创投在 AI 领域连续迎来 3 个 IP...
重庆顺博铝合金股份高管王真见、... 蓝鲸新闻1月29日讯,近日,重庆证监局发布行政监管措施决定书,剑指重庆顺博铝合金股份有限公司董事长王...
SpaceX IPO或将于20... 据报道,SpaceX正在与四家华尔街主要银行合作,准备在2026年进行首次公开募股(IPO),这可能...
商务部:中芬双方企业签署多项商... 1月29日,商务部召开例行新闻发布会。 商务部新闻发言人何咏前表示,近日,芬兰总理奥尔波成功访华,中...