刷题记录|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<

相关内容

热门资讯

海南全岛封关时间定了!啥是封关... 国家发展改革委副主任王昌林7月23日在国新办发布会上表示,关于海南自贸港封关的具体时间,经党中央批准...
华能国际完成发行20亿元科技创... 7月23日早间,华能国际发布公告称,公司已于近日完成2025年面向专业投资者公开发行科技创新可续期公...
AWS的智能体基础设施布局:开... 智能体基础设施正在快速成为人工智能下一次飞跃的支柱——不仅仅是实现智能化,更是协调其安全、高效和大规...
中国移动、中国电信、中国联通,... 莫名其妙订了新业务、套餐资费眼花缭乱、接到境外骚扰电话,这些都是电信用户常见的消费痛点。近日,中国移...
上海黄金回收价高秤准还懂老物件... 上海宝易埠珠宝:黄金回收背后的故事 在上海这个繁华喧嚣的大都市,每一条街道都诉说着独特的故事,每一家...
厉害!浙大95后博导白天搞科研... 白天,他是数字法学界的“破壁者”。傍晚,他是“浙BA”球场上的“破局者”。五冠加身的荣耀,科研攻坚的...
宏润建设:7月22日融资买入1... 证券之星消息,7月22日,宏润建设(002062)融资买入1454.54万元,融资偿还8319.83...
苹果在华销售额二季度同比下滑1... 7月23日消息,据多家媒体报道,根据市场调研机构Counterpoint最新数据,2025年第二季度...
恒生电子:7月22日融券卖出2... 证券之星消息,7月22日,恒生电子(600570)融资买入2.37亿元,融资偿还3.05亿元,融资净...
上交所:苏州创元投资发展(集团... 7月23日,上交所发布关于苏州创元投资发展(集团)有限公司2025年面向专业投资者公开发行科技创新公...
和讯投顾赵冰忆:水电站概念盘活... 7月22日,和讯投顾赵冰忆表示,眼下水电站概念足以盘活市场。一方面,水电站有定远方面的业务支撑;另一...
注册资本150亿元,中国聚变能... 可控核聚变概念图 图片来源:视觉中国 7月22日晚间,中国核电发布消息称,当日由其参股的中国聚变能源...
天力复合:7月22日融资买入1... 证券之星消息,7月22日,天力复合(873576)融资买入145.39万元,融资偿还168.55万元...
“3C”标志非商品 违法制售要... 马云骢 “禁止旅客携带没有3C标识、3C标识不清晰、被召回型号或批次的充电宝乘坐境内航班。”近期,民...
亚通股份被责令改正,时任董事长... 雷达财经 文|冯秀语 编|李亦辉 7月22日,上海亚通股份有限公司(证券简称:亚通股份,证券代码:6...
京东美团杀入了同一片战场 作者 | 周智宇 编辑 | 张晓玲 在具身智能的牌桌上,美团一直是那个下注最凶的玩家。它早已将触角伸...
业务创新 | 商业银行谱写养老... 文/中国建设银行平台运营中心 张丰安 肖璧微 我国人口老龄化问题加剧,养老金融发展面临严峻挑战,20...
多行业“反内卷”,持续推进中! 汽车、光伏、水泥、钢铁,不同行业,同在“反内卷”!从7月1日中央财经委员会第六次会议,到近期国务院常...
运输规模稳步增长!今年上半年我... (央视财经《经济信息联播》)今天(21日),民航局相关负责人在国新办新闻发布会上介绍,“十四五”期间...
对话Outer创始人刘佳科:6... 作者:欧雪 编辑:彭孝秋 Outer又有新动作了,这次是推出第二个大单品。 2018年,Outer第...