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

34.贪心算法1

0.贪心算法

 

1.柠檬水找零(easy)

. - 力扣(LeetCode)

题目解析

算法原理

代码

class Solution {public boolean lemonadeChange(int[] bills) {int five = 0, ten = 0;for (int x : bills) {if (x == 5) // 5 元:直接收下{five++;} else if (x == 10) // 10 元:找零 5 元{if (five == 0)return false;five--;ten++;} else // 20 元:分情况讨论{if (five != 0 && ten != 0) // 贪⼼{five--;ten--;} else if (five >= 3) {five -= 3;} elsereturn false;}}return true;}
}

2.将数组和减半的最少操作次数

2208. 将数组和减半的最少操作次数 - 力扣(LeetCode)

题目解析

算法原理

代码

class Solution {public int halveArray(int[] nums) {// 创建⼀个⼤根堆PriorityQueue<Double> heap = new PriorityQueue<>((a, b) -> b.compareTo(a));double sum = 0.0;for (int x : nums) // 把元素都丢进堆中,并求出累加和{heap.offer((double) x);sum += x;}sum /= 2.0; // 先算出⽬标和int count = 0;while (sum > 0) // 依次取出堆顶元素减半,直到减到之前的⼀半以下{double t = heap.poll() / 2.0;sum -= t;count++;heap.offer(t);}return count;}
}

3.最大数

179. 最大数 - 力扣(LeetCode)

题目解析

算法原理

 

---全序性

 

 

代码

class Solution {public String largestNumber(int[] nums) {// 优化:把所有的数转化成字符串int n = nums.length;String[] strs = new String[n];for (int i = 0; i < n; i++)strs[i] = "" + nums[i];// 排序Arrays.sort(strs, (a, b) -> {return (b + a).compareTo(a + b);});// 提取结果StringBuffer ret = new StringBuffer();for (String s : strs)ret.append(s);if (ret.charAt(0) == '0')return "0";return ret.toString();}
}

4.摆动序列(medium)

376. 摆动序列 - 力扣(LeetCode)

题目解析

算法原理

 

代码

class Solution {public int wiggleMaxLength(int[] nums) {int n = nums.length;if (n < 2)return n;int ret = 0, left = 0;for (int i = 0; i < n - 1; i++) {int right = nums[i + 1] - nums[i]; // 计算接下来的趋势if (right == 0)continue; // 如果⽔平,直接跳过if (left * right <= 0)ret++; // 累加波峰或者波⾕left = right;}return ret + 1;}
}

5.最长递增子序列(medium)

300. 最长递增子序列 - 力扣(LeetCode)

题目解析

算法原理

 

代码

class Solution {public int lengthOfLIS(int[] nums) {ArrayList<Integer> ret = new ArrayList<>();int n = nums.length;ret.add(nums[0]);for (int i = 1; i < n; i++) {if (nums[i] > ret.get(ret.size() - 1)) // 如果能接在最后⼀个元素后⾯,直接放{ret.add(nums[i]);} else {// ⼆分插⼊位置int left = 0, right = ret.size() - 1;while (left < right) {int mid = (left + right) / 2;if (ret.get(mid) < nums[i])left = mid + 1;elseright = mid;}ret.set(left, nums[i]); // 放在 left 位置上}}return ret.size();}
}

6.递增的三元子序列(medium)

334. 递增的三元子序列 - 力扣(LeetCode)

题目解析

算法原理

代码

class Solution {public boolean increasingTriplet(int[] nums) {int a = nums[0], b = Integer.MAX_VALUE;for (int i = 1; i < nums.length; i++) {if (nums[i] > b)return true;else if (nums[i] > a)b = nums[i];elsea = nums[i];}return false;}
}

7.最长连续递增序列

674. 最长连续递增序列 - 力扣(LeetCode)

题目解析

算法原理

代码

class Solution {public int findLengthOfLCIS(int[] nums) {int ret = 0, n = nums.length;for (int i = 0; i < n;) {int j = i + 1;// 找到递增区间的末端while (j < n && nums[j] > nums[j - 1])j++;ret = Math.max(ret, j - i);i = j; // 循环内部直接更新下⼀个位置的起点 - 贪⼼}return ret;}
}

8.买卖股票的最佳时机(easy)

121. 买卖股票的最佳时机 - 力扣(LeetCode)

题目解析

算法原理

代码

class Solution {public int maxProfit(int[] prices) {int ret = 0; // 记录最终结果for (int i = 0, prevMin = Integer.MAX_VALUE; i < prices.length; i++) {ret = Math.max(ret, prices[i] - prevMin); // 先更新结果prevMin = Math.min(prevMin, prices[i]); // 再更新最⼩值}return ret;}
}

9.买卖股票的最佳时机 Ⅱ(medium)

. - 力扣(LeetCode)

题目解析

算法原理

 

代码

class Solution {public int maxProfit(int[] prices) {// 实现⽅式⼀:双指针int ret = 0, n = prices.length;for(int i = 0; i < n; i++){int j = i;while(j + 1 < n && prices[j] < prices[j + 1]) j++; // 向后寻找上升的末端ret += prices[j] - prices[i];i = j;}return ret;}
}class Solution {public int maxProfit(int[] prices) {// 实现⽅式⼆:拆分成⼀天⼀天的形式int ret = 0;for (int i = 1; i < prices.length; i++) {if (prices[i] > prices[i - 1]) {ret += prices[i] - prices[i - 1];}}return ret;}
}

10.K 次取反后最大化的数组和(easy)

. - 力扣(LeetCode)

题目解析

算法原理

代码

class Solution {public int largestSumAfterKNegations(int[] nums, int k) {int m = 0, minElem = Integer.MAX_VALUE, n = nums.length;for (int x : nums) {if (x < 0)m++;minElem = Math.min(minElem, Math.abs(x));}// 分类讨论int ret = 0;if (m > k) {Arrays.sort(nums);for (int i = 0; i < k; i++) // 前 k ⼩个负数,变成正数{ret += -nums[i];}for (int i = k; i < n; i++) // 后⾯的数不变{ret += nums[i];}} else {// 把负数全部变成正数for (int x : nums)ret += Math.abs(x);if ((k - m) % 2 != 0) // 判断是否处理最⼩的正数{ret -= minElem * 2;}}return ret;}
}

相关文章:

34.贪心算法1

0.贪心算法 1.柠檬水找零&#xff08;easy&#xff09; . - 力扣&#xff08;LeetCode&#xff09; 题目解析 算法原理 代码 class Solution {public boolean lemonadeChange(int[] bills) {int five 0, ten 0;for (int x : bills) {if (x 5) // 5 元&#xff1a;直接收下…...

DataX实战:从MongoDB到MySQL的数据迁移--修改源码并测试打包

在现代数据驱动的业务环境中&#xff0c;数据迁移和集成是常见的需求。DataX&#xff0c;作为阿里云开源的数据集成工具&#xff0c;提供了强大的数据同步能力&#xff0c;支持多种数据源和目标端。本文将介绍如何使用DataX将数据从MongoDB迁移到MySQL。 环境准备 安装MongoDB…...

Axure设计之表格列冻结(动态面板+中继器)

在Web端产品设计中&#xff0c;复杂的表格展示是常见需求&#xff0c;尤其当表格包含大量列时&#xff0c;如何在有限的屏幕空间内优雅地展示所有信息成为了一个挑战。用户通常需要滚动查看隐藏列&#xff0c;但关键信息列&#xff08;如ID、操作按钮等&#xff09;在滚动时保持…...

WPF DataGrid 动态修改某一个单元格的样式

WPF DataGrid 动态修改某一个单元格的样式 <DataGrid Name"main_datagrid_display" Width"1267" Height"193" Grid.Column"1"ItemsSource"{Binding DataGridModels}"><DataGrid.Columns><!--ElementStyle 设…...

如何安装部署kafka

安装和部署Apache Kafka需要以下几个步骤&#xff0c;包括下载 Kafka、配置 ZooKeeper&#xff08;或者使用 Kafka 自带的 Kafka Raft 模式替代 ZooKeeper&#xff09;&#xff0c;以及启动 Kafka 服务。以下是一个但基于 Linux 的典型安装流程&#xff0c;可以根据需要改装到其…...

Centos7-rpm包管理器方式安装MySQL 5.7.25

前言 本文用于学习通过Mysql压缩包在centos7中安装和配置的过程以及过程中碰到的Bug解决。 Mysql安装包下载和上传 MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/访问Mysql官方下载站&#xff0c;选择对应的…...

Project Online 协作版部署方案

目录 前言 第一部分:为什么选择Project Online? 一、核心优势 二、适用场景 第二部分:部署前的准备工作 一、需求分析 二、账户和权限管理 三、培训与支持 第三部分:Project Online 的核心功能 一、项目创建与管理 二、资源管理 三、团队协作 四、风险管理 五…...

小米 13 Ultra机型工程固件 资源预览与刷写说明 步骤解析

小米 13 Ultra机型---机型代码为ishtar 。工程固件可以辅助修复格机或者全檫除分区后的基带修复。可以用于修复TEE损坏。以及一些分区的底层修复。此款固件也可以为更换UFS后的底包。 通过博文了解 1💝💝💝-----此机型工程固件的资源刷写注意事项 2💝💝💝-----此…...

Goweb预防XSS攻击

XSS攻击示例 假设您有一个简单的Web应用程序&#xff0c;其中包含一个用户输入表单&#xff0c;用户可以在其中输入他们的名字&#xff0c;然后这个名字会被显示在页面上。攻击者可以在表单中输入恶意的JavaScript代码&#xff0c;如&#xff0c;如果应用程序没有对这个输入进…...

ICM20948 DMP代码详解(36)

接前一篇文章&#xff1a;ICM20948 DMP代码详解&#xff08;35&#xff09; 上一回讲到了icm20948_sensor_setup() ---> inv_icm20948_initialize_auxiliary函数 ---> inv_icm20948_set_slave_compass_id函数&#xff0c;本回开始&#xff0c;就对于inv_icm20948_set_sla…...

【框架】Spring、SpringBoot和SpringCloud区别

Spring Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器&#xff08;框架&#xff09; IoC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;是一种设计思想&#xff0c;它主要用于降低软件系统中不同模块之间的耦合度&#xff0c;提高代码的可维护…...

计算机网络各层有哪些协议?

计算机网络的各层协议知识总结 一、物理层 没有涉及到比较重要的协议&#xff0c;但是有一个比较重要的技术----非对称数字用户线&#xff08;ADSL&#xff09; 二、数据链路层 1、点对点协议&#xff08;PPP----point to point protocol&#xff0c;用户计算机与ISP进行通信…...

Diffusion Model Stable Diffusion(笔记)

参考资料&#xff1a; 文章目录 DDPM架构模型如何拥有产生逼真图片的能力Denoise模型功能Denoise模型如何训练考虑进文字 文生图流程(Stable Diffusion) DDPM架构 模型如何拥有产生逼真图片的能力 Denoise模型功能 通过Denoise将一个噪音图一步步生成为目标图像 Denoise实际…...

如何创建模板提示prompt

定义模型 from langchain_ollama import ChatOllamallm ChatOllama(base_url"http://ip:11434",model"qwen2",temperature0,tool_choice"auto" )什么是提示模板&#xff1f; 它的目的是根据不同的输入动态生成特定格式的文本&#xff0c;以便…...

C语言 | Leetcode C语言题解之第423题从英文中重建数字

题目&#xff1a; 题解&#xff1a; char * originalDigits(char * s) {int lenstrlen(s);int arr[26]{0},num[10]{0},cot0;for(int i 0; i < len; i)arr[s[i] - a];num[0] arr[z-a];num[2] arr[w-a];num[4] arr[u-a];num[6] arr[x-a];num[8] arr[g-a];num[1] arr[o…...

Jboss CVE-2017-12149 靶场攻略

漏洞简述 该漏洞为 Java反序列化错误类型&#xff0c;存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter过滤器中。该过滤器在没有进⾏任何安全检查的情况下尝试将来⾃客户端的数据流进⾏反序列化&#xff0c;从⽽导 致了漏洞 漏洞范围 JBoss 5.x/6.x 环境搭建 …...

ROS2 中令人困惑的rclpy.shutdown()

在使用rclpy&#xff08;Robot Operating System (ROS) 2的Python客户端库&#xff09;时&#xff0c;rclpy.spin()和rclpy.shutdown()是两个非常重要的函数&#xff0c;它们各自承担着不同的角色。 rclpy.spin() rclpy.spin()函数通常被用于启动一个节点的主循环。在这个循环…...

PHP纯离线搭建(php 8.1.7)

要离线从零安装 PHP 8.1.7&#xff0c;需要准备好 PHP 的源代码以及所有相关的依赖包。以下是步骤&#xff1a; 步骤概览 在联网系统上下载 PHP 8.1.7 源代码和所有依赖包。 将这些文件传输到离线系统。 安装所需的依赖包。 编译并安装 PHP 8.1.7。 配置 PHP 和 Web 服务器。 …...

【iOS】push和pop、present和dismiss

目录 前言push和poppushpop present和dismisspresentdismiss实现模态对话框代码示例 区别总结 前言 push 和 present 是两种用于导航和切换视图控制器&#xff08;ViewController&#xff09;的常用方法&#xff0c;push与present都可以推出新的界面&#xff0c;present与dismi…...

基于51单片机的两路电压检测(ADC0808)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;通过ADC0808获取两路电压&#xff0c;通过LCD1602显示 二、硬件资源 基于KEIL5编写C代码&#xff0c;PROTEUS8.15进行仿真&#xff0c;全部资源在页尾&#xff0c;提供…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...