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

贪心算法(三)

目录

一、k次取反后最大化的数组和

二、优势洗牌

三、最长回文串 

四、增减字符串匹配


一、k次取反后最大化的数组和

k次取反后最大化的数组和

贪心策略:

解题代码: 

class Solution 
{
public:int largestSumAfterKNegations(vector<int>& nums, int k) {int m = 0;int min_elec = INT_MAX;for(auto& x:nums){if(x < 0)m++;min_elec = min(min_elec, abs(x));}sort(nums.begin(), nums.end());int ret = 0;if(m > k){for(int i = 0; i < nums.size(); i++){if(i < k){ret += -nums[i];continue;}ret += nums[i];}}else{for(auto& x : nums)ret += abs(x);if((k-m) % 2)ret -= 2*min_elec;}return ret;}
};


二、优势洗牌

优势洗牌

引例:田忌赛马 

田忌赛马的故事,我相信大家都知道。赛马的要求就是:上等马对上等马,中等马对中等马,下等马对下等马。因为齐王的上中下等马,都依次比田忌的上中下等马好一些,所以无论怎么比,田忌都无法获胜。

而孙膑给田忌出了个注意:田忌的下等马对齐王的上等马,中等马对下等马,上等马对中等马。这样,虽然齐王的上等马对田忌的下等马是场碾压式的胜利,可是另外两场,田忌都可以获胜。总的来说,就是田忌获胜了。

而我们这道题的贪心策略就可以从田忌赛马中获得启发。

贪心策略:

我们根据示例二来模拟一下解题过程。

我们需要先对数组进行排序。贪心策略对于田忌赛马的思想运用,就是对于同一位置来说,如果nums1的值小于nums2的值, 那么我们就拿nums1的值去匹配nums2中没有被匹配元素的最大元素。

解题代码:

class Solution 
{
public:vector<int> advantageCount(vector<int>& nums1, vector<int>& nums2) {int m = nums1.size();sort(nums1.begin(), nums1.end());vector<int> index(m);for(int i = 0; i < m; i++)index[i] = i;sort(index.begin(), index.end(), [&](int i, int j){return nums2[i] < nums2[j];});vector<int> ret(m);int left = 0, right = m-1;for(auto& x:nums1){if(x <= nums2[index[left]]){ret[index[right]] = x;right--;}else if(x > nums2[index[left]]){ret[index[left]] = x;left++;}}return ret;}
};


三、最长回文串 

最长回文串

贪心策略:

1、先统计字符串s中,各个字符的个数。

2、如果某个字符的个数是偶数,那么所有的这个字符都可以去构成回文串。

3、如果有字符的个数是奇数,那么可以选择其中一个字符放在中间,如下:

注:设一个字符个数为x,那么该字符可以构成回文串的个数为 x / 2 * 2。 

解题代码: 

class Solution 
{
public:int longestPalindrome(string s) {int hash[127] = {0};for(auto& e:s)hash[e]++;int len = 0;for(int i = 0; i < 127; i++)len += hash[i] / 2 * 2;return len == s.size() ? len : len+1;}
};


四、增减字符串匹配

增减字符串匹配

贪心策略: 

1、当遇到 'I',选择当前能够选择的最小的数。

2、当遇到 'D',选择当前能够选择的最大的数。 

解题代码:

class Solution 
{
public:vector<int> diStringMatch(string s) {int n = s.size();vector<int> ret;int left = 0, right = n;for(auto& e : s){if(e == 'I')ret.push_back(left++);elseret.push_back(right--);}ret.push_back(left);return ret;}
};

相关文章:

贪心算法(三)

目录 一、k次取反后最大化的数组和 二、优势洗牌 三、最长回文串 四、增减字符串匹配 一、k次取反后最大化的数组和 k次取反后最大化的数组和 贪心策略&#xff1a; 解题代码&#xff1a; class Solution { public:int largestSumAfterKNegations(vector<int>&am…...

uniApp打包H5发布到服务器(docker)

使用docker部署uniApp打包后的H5项目记录&#xff0c;好像和VUE项目打包没什么区别... 用HX打开项目&#xff0c;首先调整manifest.json文件 开始用HX打包 填服务器域名和端口号~ 打包完成后可以看到控制台信息 我们可以在web文件夹下拿到下面打包好的静态文件 用FinalShell或…...

【AI落地应用实战】篡改检测技术前沿探索——从基于检测分割到大模型

在数字化洪流席卷全球的当下&#xff0c;视觉内容已成为信息交流与传播的核心媒介&#xff0c;然而&#xff0c;随着PS技术和AIGC技术的飞速发展&#xff0c;图像篡改给视觉内容安全带来了前所未有的挑战。 本文将探讨篡改检测技术的现实挑战&#xff0c;分享篡改检测技术前沿…...

使用 VSCode 学习与实践 LaTeX:从插件安装到排版技巧

文章目录 背景介绍编辑器编译文件指定输出文件夹 usepackagelatex 语法列表插入图片添加参考文献 背景介绍 最近在写文章&#xff0c;更喜欢latex的论文引用。然后开始学习 latex。 编辑器 本文选择vscode作为编辑器&#xff0c;当然大家也可以尝试overleaf。 overleaf 有网…...

使用scrapy框架爬取微博热搜榜

注&#xff1a;在使用爬虫抓取网站数据之前&#xff0c;非常重要的一点是确保遵守相关的法律、法规以及目标网站的使用条款。 &#xff08;最底下附下载链接&#xff09; 准备工作&#xff1a; 安装依赖&#xff1a; 确保已经安装了Python环境。 使用pip安装scrapy&#xff…...

瑞吉外卖项目学习笔记(七)新增菜品、(批量)删除菜品

瑞吉外卖项目学习笔记(一)准备工作、员工登录功能实现 瑞吉外卖项目学习笔记(二)Swagger、logback、表单校验和参数打印功能的实现 瑞吉外卖项目学习笔记(三)过滤器实现登录校验、添加员工、分页查询员工信息 瑞吉外卖项目学习笔记(四)TableField(fill FieldFill.INSERT)公共字…...

es快速扫描

介绍 Elasticsearch简称es&#xff0c;一款开源的分布式全文检索引擎 可组建一套上百台的服务器集群&#xff0c;处理PB级别数据 可满足近实时的存储和检索 倒排索引 跟正排索引相对&#xff0c;正排索引是根据id进行索引&#xff0c;所以查询效率非常高&#xff0c;但是模糊…...

前端对页面数据进行缓存

页面录入信息&#xff0c;退出且未提交状态下&#xff0c;前端对页面数据进行存储 前端做缓存&#xff0c;一般放在local、session和cookies里面&#xff0c;但是都有大小限制&#xff0c;如果页面东西多&#xff0c;比如有上传的图片、视频&#xff0c;浏览器会抛出一个Quota…...

leetCode322.零钱兑换

题目&#xff1a; 给你一个整数数组coins,表示不同面额的硬币&#xff1b;以及一个整数amount,表示总金额。 计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额&#xff0c;返回-1。 你可以认为每种硬币的数量是无限的。 示例1&#xff1…...

jsp-servlet开发

STS中开发步骤 建普通jsp项目过程 1.建项目&#xff08;非Maven项目&#xff09; new----project----other----Web----Dynamic Web Project 2.下载包放到LIB目录中,如果是Maven项目可以自动导包&#xff08;pom.xml中设置好&#xff09; 3.设置工作空间&#xff0c;网页…...

从零玩转CanMV-K230(7)-I2C例程

文章目录 前言一、IIC API二、示例总结 前言 K230内部包含5个I2C硬件模块&#xff0c;支持标准100kb/s&#xff0c;快速400kb/s模式&#xff0c;高速模式3.4Mb/s。 通道输出IO配置参考IOMUX模块。 一、IIC API I2C类位于machine模块下。 i2c I2C(id, freq100000) 【参数】…...

n阶Legendre多项式正交性的证明

前言 在《n次Legendre(勒让德)多项式在区间(-1, 1)上根的分布及证明》这篇文章中&#xff0c;我们阐述了Legendre多项式在 [ − 1 , 1 ] [-1,1] [−1,1]上的根分布情况并给出了证明。本文将证明Legendre多项式在 [ − 1 , 1 ] [-1,1] [−1,1]上的正交性质。 正交多项式的定义…...

HarmonyOS NEXT - Dialog 和完全自定义弹框

demo 地址: https://github.com/iotjin/JhHarmonyDemo 组件对应代码实现地址 代码不定时更新&#xff0c;请前往github查看最新代码 在demo中这些组件和工具类都通过module实现了&#xff0c;具体可以参考HarmonyOS NEXT - 通过 module 模块化引用公共组件和utils HarmonyOS NE…...

内容与资讯API优质清单

作为开发者&#xff0c;拥有一套API合集是必不可少的。这个开发者必备的API合集汇集了各种实用的API资源&#xff0c;为你的开发工作提供了强大的支持&#xff01;无论你是在构建网站、开发应用还是进行数据分析&#xff0c;这个合集都能满足你的需求。你可以通过这些免费API获…...

开源 JS PDF 库比较

原文查看&#xff1a;开源JavaScript PDF Library对比 对于需要高性能、复杂功能或强大支持处理复杂 PDF 的项目&#xff0c;建议选择商业​​ PDF 库, 如ComPDFKit for Web。但是&#xff0c;如果您的目标只是在 Web 应用程序中显示 PDF&#xff0c;则可以使用几个可靠的开源…...

AnaPico信号源在通信测试中的应用案例

AnaPico信号源在通信测试中的应用案例广泛&#xff0c;涉及多种通信技术和测试需求。以下是一些具体的应用实例&#xff1a; 1. APPH系列信号源分析仪&#xff08;相位噪声分析仪&#xff09; APPH系列是一款高性能相位噪声分析仪和VCO测试仪&#xff0c;其不同型号的频率范围…...

《智启新材:人工智能重塑分子结构设计蓝图》

在当今科技飞速发展的时代&#xff0c;新材料的研发宛如一场激烈的竞赛&#xff0c;而人工智能&#xff08;AI&#xff09;作为一匹黑马&#xff0c;正以前所未有的速度和力量驰骋于这片赛场&#xff0c;为新材料的分子结构设计带来了革命性的突破&#xff0c;成为推动行业发展…...

进阶岛-L2G5000

茴香豆&#xff1a;企业级知识库问答工具 茴香豆本地标准版搭建 环境搭建 安装茴香豆 知识库创建 测试知识助手 Gradio UI 界面测试...

单点登录平台Casdoor搭建与使用,集成gitlab同步创建删除账号

一&#xff0c;简介 一般来说&#xff0c;公司有很多系统使用&#xff0c;为了实现统一的用户名管理和登录所有系统&#xff08;如 GitLab、Harbor 等&#xff09;&#xff0c;并在员工离职时只需删除一个主账号即可实现权限清除&#xff0c;可以采用 单点登录 (SSO) 和 集中式…...

PaddlePaddle飞桨Linux系统Docker版安装

PaddlePaddle飞桨Linux系统Docker版安装 最近学习和了解PP飞桨&#xff0c;一切从安装开始。官网的安装教程很详细&#xff1a; https://www.paddlepaddle.org.cn/install/quick?docurl/documentation/docs/zh/install/docker/linux-docker.html 记录我在安装过程中遇到的问题…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...