贪心算法基础题(第三十四天)

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

题目

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

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

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

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

答案

class Solution {public int largestSumAfterKNegations(int[] nums, int k) {nums = IntStream.of(nums).boxed().sorted((a,b)->Math.abs(a)-Math.abs(b)).mapToInt(Integer::intValue).toArray();for(int i=nums.length-1;i>=0;i--){if(nums[i]<0 && k>0){nums[i] = -nums[i];k--;}}if(k>0 && k%2==1){nums[0] = - nums[0];}int res = 0;for(int num : nums){res += num;}return res;}
}







134. 加油站

题目

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

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

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

答案

class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {int tatolSum = 0;int currSum = 0;int index = 0;for(int i=0;i<gas.length;i++){tatolSum += gas[i] - cost[i];currSum += gas[i] - cost[i];if(currSum<0){currSum = 0;index = (i+1)%gas.length;} }return tatolSum<0 ? -1 : index; }
}







135. 分发糖果

题目

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

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

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

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

答案

class Solution {public int candy(int[] ratings) {int[] arr = new int[ratings.length];arr[0] = 1;for(int i=1;i<arr.length;i++){arr[i] = ratings[i]>ratings[i-1] ? arr[i-1]+1 : 1; }for(int i=arr.length-2;i>=0;i--){if(ratings[i]>ratings[i+1]){arr[i] = Math.max(arr[i],arr[i+1]+1);}}int res = 0;for(int num : arr){res += num;}return res;}
}







860. 柠檬水找零

题目

在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。

每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。

注意,一开始你手头没有任何零钱。

给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false

答案

class Solution {public boolean lemonadeChange(int[] bills) {int fiveNum = 0;int tenNum = 0;for(int i=0;i<bills.length;i++){if(bills[i]==5){fiveNum++;}else if(bills[i]==10){fiveNum--;tenNum++;}else{if(tenNum>0){tenNum--;fiveNum--;}else{fiveNum -= 3;}}if(fiveNum<0){return false;}}return true;}
}







406. 根据身高重建队列

题目

假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好ki 个身高大于或等于 hi 的人。

请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。

答案

class Solution {public int[][] reconstructQueue(int[][] people) {Arrays.sort(people,(a,b)->{if(a[0]==b[0]) return a[1]-b[1];return b[0] - a[0];});List<int[]> list = new ArrayList();for(int i=0;i<people.length;i++){list.add(people[i][1],people[i]);}return list.toArray(new int[people.length][2]);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/5780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全知识点

网络安全 1&#xff0e; 网络安全的定义&#xff0c;网络安全的属性。 定义&#xff1a;针对各种网络安全威胁研究其安全策略和机制&#xff0c;通过防护、检测和响应&#xff0c;确保网络系统及数据的安全性。 属性&#xff1a;机密性 认证&#xff08;可鉴别性&#xff09…

启发式搜索算法4 -遗传算法实战:吊死鬼游戏

相关文章: 启发式搜索算法1 – 最佳优先搜索算法 启发式搜索算法2 – A*算法 启发式搜索算法2 – 遗传算法 有一个小游戏叫吊死鬼游戏&#xff08;hangman&#xff09;&#xff0c;在学习英语的时候&#xff0c;大家有可能在课堂上玩过。老师给定一个英文单词&#xff0c;同学们…

Hive 单机版

Hive 安装 前提 安装 hadoop Ubuntu 安装、配置 MySQL 安装 sudo apt install mysql-serverMySQL 配置 假如你不知道 root 用户密码&#xff0c; 需要重置 root 密码 sudo passwd root切换到 root 用户 su - root使用命令 mysql 连接数据库 mysql创建用户管理数据库&a…

第 8 章 机器人平台设计(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 学习到当前阶段大家对ROS已经有一定的认知了&#xff0c;但是之前的内容更偏理论&#xff0c;尤其是介绍完第6…

2024五一数学建模要点和难点,代码实例和解析

2024年五一数学建模竞赛相关信息 1.竞赛时间: 开始时间:2024年5月1日10:00 结束时间:2024年5月4日12:00 2.报名时间: 开始时间:2024年4月7日00:00 截止时间:2024年4月30日24:00 3.参赛范围与形式: 1.所有在校的研究生、本科生、专科生和高中生均可以参赛队为单位…

Excel 透视表:数据分析利器

Excel 透视表&#xff1a;数据分析利器 Excel 透视表是 Excel 中一个强大的数据分析工具&#xff0c;可以帮助用户快速、轻松地汇总、分析大量数据。它能够将复杂的数据转化为易于理解的摘要信息&#xff0c;并提供多种视图和选项供用户探索数据。 重要性 Excel 透视表在数据…

自动驾驶规划与控制技术解析

目录 1. 自动驾驶技术 2.定位location 3. 地图HD Map ​编辑 4 预测prediction

大数据信用花了,一般多久能正常?

在当今数字化时代&#xff0c;大数据技术被广泛应用于各个领域&#xff0c;包括金融、电商、社交等。然而&#xff0c;随着大数据技术的普及&#xff0c;个人信用问题也日益凸显&#xff0c;其中“大数据信用花”现象尤为引人关注。那么&#xff0c;大数据信用花究竟是什么?一…

【DevOps】Dockerfile详解,做自己的docker镜像

学会使用DockerHub找自己想要的镜像以后&#xff0c;我们会很方便的使用一些公用镜像仓库的Docker镜像。但是开发和部署的过程中&#xff0c;能找到的镜像可能并不能满足我们需要&#xff0c;这样我们就需要自己制作Docker镜像。我们通过需要编写一个 Dockerfile&#xff0c;然…

Java JVM 和 Python GPU

在解释Java、JVM&#xff08;Java Virtual Machine&#xff09;和Python与GPU&#xff08;Graphics Processing Unit&#xff09;的关系时&#xff0c;我们需要分别讨论这些概念以及它们如何相互作用或独立工作。 Java Java是一种编程语言&#xff0c;设计目标是“一次编写&a…

【Unity】修改模型透明度

在 Unity 中修改模型透明度主要有两种方法&#xff1a;通过材质和通过着色器。以下是两种方法的步骤和解释&#xff1a; 方法 1&#xff1a;通过材质 在 Unity 编辑器中&#xff0c;选择你想要修改透明度的模型。在 Inspector 窗口中&#xff0c;找到模型的 Renderer 组件&am…

HTML5本地存储账号密码

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML5本地存储账号密码</title> </head…

【Java从入门到精通】Java方法

在前面几个章节中我们经常使用到 System.out.println()&#xff0c;那么它是什么呢&#xff1f; println() 是一个方法。System 是系统类。out 是标准输出对象。 这句话的用法是调用系统类 System 中的标准输出对象 out 中的方法 println()。 那么什么是方法呢&#xff1f; …

揭秘FastStone Capture

揭秘FastStone Capture 引言 在数字时代&#xff0c;屏幕截图工具已成为日常工作和学习中不可或缺的部分。FastStone Capture是一款功能强大的屏幕捕捉软件&#xff0c;它不仅能够截取屏幕图像&#xff0c;还具备编辑和分享功能。本文将深入探讨FastStone Capture的特点、使用…

网络中的基本概念

目录 正文&#xff1a; 1.IP地址 2.端口号 3.协议 4.协议分层 5.封装 6.分用 7.客户端 8.服务器 9.客户端-服务器模型&#xff08;Client-Server Model&#xff09; 10.请求 11.响应 12.两台主机之间的网络通信流程 正文&#xff1a; 1.IP地址 IP地址&#xff0…

主成分分析在R语言中的简单应用:使用mvstats包

在数据科学领域&#xff0c;主成分分析&#xff08;PCA&#xff09;是一种广泛使用的技术&#xff0c;主要用于数据降维和探索性数据分析。PCA可以帮助我们发现数据中的模式&#xff0c;减少数据集的复杂性&#xff0c;同时保持数据中最重要的特征。本文将介绍如何在R语言中使用…

04_jvm性能调优_并行收集器介绍

并行收集器&#xff08;此处也称为吞吐量收集器&#xff09;是类似于串行收集器的分代收集器。串行和并行收集器之间的主要区别在于并行收集器具有多个线程&#xff0c;用于加速垃圾回收过程。 通过命令行选项-XX:UseParallelGC 可启用并行收集器。默认情况下&#xff0c;使用…

leetcode 174.地下城游戏

思路&#xff1a;dp。 原先的时候其实是想这样用dfs的做法进行解答的&#xff0c;但是呢&#xff0c;是不对的。 这里作者dfs的思路是&#xff1a;首先找出来最小路径和&#xff0c;然后再处理最小路径和这条路径里面的初始值。但是&#xff0c;后来发现这样不一定是最优解&a…

LeetCode 105.从前序与中序遍历构造二叉树

题目描述 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,nul…

Dockerfile 里 ENTRYPOINT 和 CMD 的区别

ENTRYPOINT 和 CMD 的区别&#xff1a; 在 Dockerfile 中同时设计 CMD 和 ENTRYPOINT 是为了提供更灵活的容器启动方式。ENTRYPOINT 定义了容器启动时要执行的命令&#xff0c;而 CMD 则提供了默认参数。通过结合使用这两个指令&#xff0c;可以在启动容器时灵活地指定额外的参…