【代码随想录】【算法训练营】【第35天】 [1005]K次取反后最大化的数组和 [134]加油站 [135]分发糖果

news2024/10/5 16:30:37

前言

思路及算法思维,指路 代码随想录。
题目来自 LeetCode。

day 35,连休两天~

题目详情

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

题目描述

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

解题思路

前提:数组
思路:优先负数取反,未取到k次, 两两抵消后,将绝对值最小的正值取反。
重点:两次贪心。

代码实现

C语言
数组大小排序

注意临界导致数组溢出

int cmp(void *p1, void *p2)
{
    return (*(int *)p1 > *(int *)p2);
}

int sum(int *nums, int numsSize)
{
    int sum = 0;
    for (int i = 0; i < numsSize; i++) {
        sum += nums[i];
    }
    return sum;
}

int largestSumAfterKNegations(int* nums, int numsSize, int k) {
    // 排序
    qsort(nums, numsSize, sizeof(int), cmp);
    // 取反, 优先负数取整
    int zeroIdx = 0;
    int curIdx = 0;
    while ((k > 0) && (curIdx < numsSize) && (nums[curIdx] < 0)) {
        nums[curIdx] = 0 - nums[curIdx];
        curIdx++;
        k--;
    }
    // 判断是否未取到k次, 两两抵消后,将绝对值最小的正值取反
    if (k % 2 != 0) {
        if ((curIdx == 0) || (numsSize == 1)) {
            nums[0] = 0 - nums[0];
        }
        else if (curIdx == numsSize) {
            nums[curIdx - 1] = 0 - nums[curIdx - 1];
        }
        else
        {
            if (nums[curIdx] <= nums[curIdx - 1]) {
                nums[curIdx] = 0 - nums[curIdx];
            }
            else
            {
                nums[curIdx - 1] = 0 - nums[curIdx - 1];
            }
        }
    }
    return sum(nums, numsSize);
}
数组绝对值大小排序
int cmp(void *p1, void *p2)
{
    return abs(*(int *)p1) < abs(*(int *)p2);
}

int sum(int *nums, int numsSize)
{
    int sum = 0;
    for (int i = 0; i < numsSize; i++) {
        sum += nums[i];
    }
    return sum;
}

int largestSumAfterKNegations(int* nums, int numsSize, int k) {
    // 按绝对值从大到小排序
    qsort(nums, numsSize, sizeof(int), cmp);
    // 将前k个负数取正
    for (int j = 0; j < numsSize; j++) {
        if (k == 0) {
            break;
        }
        if (nums[j] < 0) {
            nums[j] = 0 - nums[j];
            k--;
        }
    }
    // k未消耗完,将绝对值最小的元素取反,即数组最后一位
    if (k % 2 == 1) {
        nums[numsSize - 1] = 0 - nums[numsSize - 1];
    }
    // 求和
    return sum(nums, numsSize);
}

[134] 加油站

题目描述

134 加油站
134 加油站

解题思路

前提:
思路:
重点:

代码实现

C语言

[135] 分发糖果

题目描述

135 分发糖果
135 分发糖果

解题思路

前提:
思路:
重点:

代码实现

C语言

今日收获

  1. 贪心算法:艰难的应用。

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

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

相关文章

汇编语言作业(七)

目录 一、实验目的 二、实验内容 三、实验步骤以及结果 四、实验总结 一、实验目的 熟悉无符号数和有符号数乘法和除法指令的使用掌握无符号位扩展指令的使用掌握逻辑指令的使用 二、实验内容 1、编写一个汇编程序&#xff0c;要求从键盘中输入一个小写字母&#xff0c;将其转…

性价比之选!W830NB降噪耳机高性能配置,探底价309元起

目录 一、降噪技术的革新&#xff1a;-45dB深度沉浸 二、超长续航&#xff0c;乐动不停歇 三、音质的极致追求&#xff1a;Hi-Res双金标认证 四、空间音频与低延迟游戏模式 五、人性化设计与智能互联 六、总结 在这个快节奏的时代&#xff0c;寻找一片属于自己的宁静空间…

TypeScript入门教程

今天&#xff0c;给大家分享一个自己总结的超详细的TypeScript入门教程电子书。从TypeScript的基础知识开始讲解&#xff0c;包括数据类型、变量、运算符、条件语句、循环结构等基本概念。接着&#xff0c;详细介绍TypeScript中的函数、类和接口等高级特性&#xff0c;以及如何…

理解查准率P、查全率R及Fβ度量怎么得来的

如果得到的是一组样本在两个算法上的一次预测结果&#xff0c;其中每个样本都被赋予了一个为正样本的概率&#xff08;例如&#xff0c;通过逻辑回归或朴素贝叶斯分类器得到的概率估计&#xff09;&#xff0c;那么可以通过改变不同的阈值点来利用这些预测结果画出PR曲线。 如果…

Spring系统学习 -Spring IOC 的XML管理Bean之类类型属性赋值、数组类型属性赋值、集合类属性赋值

类类型属性赋值&#xff1a; 在XML配置中&#xff0c;可以使用 <property> 元素为类类型属性赋值。通过指定属性的名称和值&#xff0c;可以直接将其他Bean的实例引用注入到目标Bean的属性中。这种方式可以建立对象之间的关联关系。例如&#xff0c;可以将一个Address对象…

python项目(豆瓣电影)

目录 1、项目效果 2、项目源码 3、技术实现 4、总结 前言 我的这个项目是做的一个豆瓣电影爬取&#xff0c;爬取了豆瓣电影的TOP排行榜的数据 包括电影的名称 演员 评分 评价人数等等 运用了TK布局助手 布了4个界面 有登录 注册 首页 详情 注意&#xff1a;项目并没有连接数…

人工智能、机器学习、深度学习:技术革命的深度解析

目录 人工智能、机器学习、深度学习&#xff1a;技术革命的深度解析 引言 第一部分&#xff1a;人工智能的起源与演进 1.1 人工智能的定义 1.2 人工智能的历史 1.3 人工智能的关键概念 1.4 人工智能的应用领域 1.5 人工智能的未来发展 1.6 人工智能的代码案例 第二部…

计划任务 周期任务计划

周期任务计划 crontab 作用&#xff1a;实现周期重复的计划任务 服务&#xff1a;crond 启动crontab的服务 service crond start 自动启动 chkconfig crond on 例子&#xff1a; * * * * * touch date \\%F.log crontab的时间表示格式&#xff1a; 分钟&#xff1a;…

[2024-06]-[大模型]-[Ollama] 0-相关命令

常用的ollama命令[持续更新中] ollama更新&#xff1a; curl https://ollama.ai/install.sh |sh带着flash attention启动&#xff1a; OLLAMA_FLASH_ATTENTION1 ollama serve停止ollama服务&#xff1a; sudo systemctl stop ollama note&#xff1a;目前遇到sudo systemctl …

IBM,开始构建以量子为中心的超级计算机

6月6日&#xff0c;IBM与Pasqal宣布了一项重大合作!IBM和Pasqal打算合作开发一种以量子为中心的超级计算的通用方法并促进化学和材料科学的应用研究。IBM和Pasqal将与高性能计算领域的领先机构合作&#xff0c;为以量子为中心的超级计算奠定基础——将量子计算与先进的经典计算…

Python报表需求处理示例

单一文件下&#xff0c;相关主题的共128张字段结构相似的表&#xff0c;对一种需求用Excel手工编辑相当麻烦&#xff0c;下面介绍一种python做自动化报表示例及代码流程。 每张表均有相同的字段结构&#xff0c;因此可对该文件下所有表格同时操作&#xff0c;大大提高了计算效率…

Milvus 2.4 向量库安装部署

1、linux 已有docker环境 2、安装fio命令 yum install -y fio 2、mkdir test-data fio --rwwrite --ioenginesync --fdatasync1 --directorytest-data --size2200m --bs2300 --namemytest ctrlc 3、lscpu 4、docker -v 6、安装docker compose组件 yum -y install python3-…

万字长文讲解如何快速搭建一个Spring Cloud项目

文章目录 概念基本概念微服务七大组件 初始化Maven父工程整合注册中心组件整合远程调用与负载均衡组件组件整合网关组件整合配置中心组件以gateway模块为例 整合分布式事务组件操作数据库模拟创建订单和扣减库存整合Seata 整合熔断降级组件整合链路追踪组件源码地址参考来源 概…

Rust : windows下protobuf和压缩传输方案

此前dbpystream库是用python开发 web api。今天在rust中试用一下protobuf。 本文关键词&#xff1a;编译器、protobuf、proto文件、序列化、zstd压缩&#xff0c;build。 一、 protobuf编译器下载 具体见相关文章。没有编译器&#xff0c;protobuf无法运行。 windows参见&am…

多年不见,我美少女又回来了!

各位&#xff0c;可能很多人都不记得我了&#xff0c;上学的时候喜欢记学习笔记&#xff0c;好多学弟学妹们经常来我的博客看笔记&#xff0c;对于学习也有帮助。 时过境迁&#xff0c;生活中的琐事和繁忙的工作&#xff0c;真的自顾不暇… 还记得之前说要转型给大家分享内容运…

量产导入 | DFT和ATE概述

什么是DFT DFT(Design for Test),即可测性设计。 一切为了芯片流片后测试所加入的逻辑设计,都叫DFT。 DFT只是为了测试芯片制造过程中有没有缺陷,而不是用来验证芯片功能的,芯片功能的完善应该应该是在芯片开发过程用先进验证方法学去做的。 芯片制造过程相当复杂,工艺缺陷…

LabVIEW程序内存泄漏分析与解决方案

维护他人编写的LabVIEW程序时&#xff0c;若发现程序运行时间越长&#xff0c;占用内存越大直至崩溃&#xff0c;通常是内存泄漏导致的。本文从多角度分析内存泄漏的可能原因&#xff0c;包括数组和字符串处理、未释放的资源、循环中的对象创建等&#xff0c;并提供具体的解决方…

SamSung PM9B1 1TB性能实测

** SamSung PM9B1 1TB性能实测 ** 一颗主控一颗NAND FLASH 单面器件布局&#xff0c;PMIC集成电源芯片DC\DC模组 PCIE Gen4.0X4 性能3673MB2954MB 工作状态功耗4.1w左右&#xff0c;待机状态功耗1.2W左右 全盘读速度2000MB左右 H2缓内速度1.2G H2缓外速度730MB H2读速度1.3G …

牛客little w and Discretization

玩一下样例发现&#xff0c;只要找到mex就可以知道有((1-mex)的值)所在的位置离散化后和原本的值是一样的&#xff0c;所以询问区间的长度-&#xff08;1-mex&#xff09;有几个值就是答案&#xff0c;数据范围3e5&#xff0c;莫队值域分块求区间mex,计算1-mex有几个位置属于这…

mmdeploy环境部署流程

参考&#xff1a;mmdeploy/docs/zh_cn/01-how-to-build/linux-x86_64.md at main open-mmlab/mmdeploy (github.com) 从零入门《openmmlab》mmdeploy[1]环境安装及简单上手_哔哩哔哩_bilibili 我的环境&#xff1a; docker容器&#xff0c;ubuntu20.04&#xff0c;cuda11.7…