力扣答案c语言,力扣561. 数组拆分 I-C语言实现-简单题

题目

给定长度为 2n 的整数数组 nums ,你的任务是将这些数分红 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。

返回该 最大总和 。函数

示例 1:编码

输入:nums = [1,4,3,2]

输出:4

解释:全部可能的分法(忽略元素顺序)为:code

(1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3

(1, 3), (2, 4) -> min(1, 3) + min(2, 4) = 1 + 2 = 3

(1, 2), (3, 4) -> min(1, 2) + min(3, 4) = 1 + 3 = 4

因此最大总和为 4

示例 2:blog

输入:nums = [6,2,6,5,1,2]

输出:9

解释:最优的分法为 (2, 1), (2, 5), (6, 6). min(2, 1) + min(2, 5) + min(6, 6) = 1 + 2 + 6 = 9排序

提示:图片

1 <= n <= 104

nums.length == 2 * n

-104 <= nums[i] <= 104

来源:力扣(LeetCode)leetcode

解题

模板

int arrayPairSum(int* nums, int numsSize){

}

分析

这里的题目不难,所要思考的是咱们对于这个两两分组最小值之和怎样取得最大值。

结果就是尽量大的和大的一组,使得至少有一个大的进入最后的综合计算,大的数据进入越多就越大,其实也能够理解未计算第二大,第四大,第六大的元素之和,即求取偶数按大小排名元素之和。既然如此咱们就能够选择一种新的解决办法,进行排序而后对于偶数项相加就能够获得最后的答案。

初版 实现办法:get

int arrayPairSum(int* nums, int numsSize){

int x=0,ret=0;

for(int i=0;i

for(int k=i;k

if(nums[i]

x=nums[i];

nums[i]=nums[k];

nums[k]=x;

}

}

}

for(int i=0;i

ret+=nums[i];

}

return ret;

}

这个代码有问题吗?没有,可是他有一个缺点,复杂度使整个程序运行比较多个变量的数组就会超时it

2c907d5870f0cb80d2782124e9fb8399.png

要解决这问题能够使用C语言里的自带的一个数组排序函数qsort()

这里不写具体用法,给个大体的轮廓示意

int compare(const void* a, const void* b) {

return (*(int*)a)-(*(int*)b);//从小到大

//return *(int *)b-*(int *)a;//从大到小

}

void func(int* nums, int numsSize) {

qsort(nums,numsSize,sizeof(int),compare);

}

融合搭配随后的代码里就是这样。

int cmp(int *a, int *b) {

return *a - *b;

}

int arrayPairSum(int *nums, int numsSize) {

qsort(nums, numsSize, sizeof(int), cmp);

int ret = 0;

for (int i = 0; i < numsSize; i += 2) {

ret += nums[i];

}

return ret;

}

04d92e1fdbb9f743a50fe3ec0b0360bd.png

对于再c语言中不少时候借助于已有的函数逻辑来进行编码的确时恒有帮助,往后会再c语言笔记里补充上各大c函数的笔记。

gtsam官方文档: The new IMU Factor学习笔记 gtsam官方文档:The new IMU Factor 本文为gtsam imu预积分文档学习笔记,为gtsam基于切向量实现的imu预积分的理论基础。 导航状态 定义导航状态为 Xbn={Rbn,Pbn,Vbn}X^n_b=\{R^n_b,P^n_b,V^n_b\}Xbn​={Rbn​,Pbn​,Vbn​} 上角标n:导航(navigation)坐标系 下角标b:载体(body)坐标系 下文均省略上下标 矢量场与微分方程 对于导航问我们用如下微分方程描述 X˙(t)=F(t,X)\dot X(t) 阅读详情

相关推荐

InfiniBand 与 RoCE 协议介绍

InfiniBand 是高性能互联的 “标杆”,以极致的低延迟、高可靠性适用于对性能要求苛刻的场景(如超算、大规模 AI 训练);而 RoCE 通过以太网实现 RDMA,平衡了性能与成本,成为数据中心云计算的主流选择。两者均基于 RDMA 技术,核心目标是解决传统网络的 “CPU 瓶颈” “延迟瓶颈”,推动高性能计算分布式系统的发展。

jundao1997的专栏 677

(C语言版)力扣(LeetCode)数组相关面试OJ解析

力扣(LeetCode)26. 删除有序数组中的重复项 27. 移除元素 88. 合并两个有序数组 解析

立志做一个高产且细节博主 1995

leetcode答案-LeetCode_C:力扣_C

leetcode 答案力扣_C 该存储库是 Leetcode 的练习数据库。 这里所有的答案都经过了在线判断的测试。

LeetCode-1~10(C语言

s 由英文字母(大写小写)、数字(0-9)、’ ‘、’+‘、’-.’ 组成。回文数是指正序(从左向右)倒序(从右向左)读都是一样的整数。,请你来实现一个支持 ‘. ‘*’ 的正则表达式匹配。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。p 只包含从 a-z 的小写字母,以及字符 . *。s 由英文字母(小写大写)、‘,’ .’ 组成。的链表,表示两个非负的整数。请你将两个数相加,并以相同形式返回一个表示的链表。的方式存储的,并且每个节点只能存储。

qq_52167875的博客 2067

《C指针》读书笔记(第四章 语句)

对于常见的语句做了详细的介绍,也举了一些详细的例子。

weixin_43719763的博客 393

【LeetCode】力扣100道(26-30)附源码 轮转数组 乘积 矩阵 螺旋矩阵 旋转图像(C++)

【LeetCode】力扣100道(26-30)附源码(C++)

你要拥有一个你喜欢并且热爱的人生 7941

力扣新手单6,C语言常规解答

力扣新手单6,C语言常规解答

weixin_44077290的博客 1190

力扣561. 数组拆分 I-C语言实现-简单

目 传送门 给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总最大。 返回该 最大总 。 示例 1: 输入:nums = [1,4,3,2] 输出:4 解释:所有可能的分法(忽略元素顺序)为: (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3 (1, 3), (2, 4) -> mi

清濑灰二 605

leetcode c程序总提示主函数_Python练手:一行Python解Leetcode习

一行Python解Leetcode习语法简单,提供大量开箱即用的工具是Python语言的一大特点,也是其受欢迎的重要特点。所谓“人生苦短,我用Python”,并不是说Python比其他语言性能好、也不是说Python比其它语言优秀,而是说它方便,易用,可用于思路验证、原型实现,也可用于快速开发;其开发效率高的特点使其的网络编程、爬虫数据开发领域极受欢迎。知乎上甚至有专门的话讨论一行Pytho...

weixin_39603908的博客 153

力扣第十五—三数之(C语言

*** 返回一个二维数组,其大小由 *returnSize 指定。* 每个子数组的大小会通过 *returnColumnSizes 数组返回。* 注意:返回的二维数组 *returnColumnSizes 数组都必须使用 malloc 进行内存分配,假设调用者会调用 free() 来释放内存。*/malloc用于分配全新的内存块,而realloc用于调整已分配内存块的大小。realloc可以在原内存块基础上进行扩展或缩小,可能会移动内存块的位置。

2401_86810295的博客 724

力扣算法第一(C语言)

leetcode第一(小解一下)

wo418xs的博客 876

(C语言版)力扣(LeetCode)栈队列面试

20. 有效的括号 解法一:建立栈解决 解法二:数组模拟栈解决 225. 用队列实现栈 解法:两个队列实现栈 232. 用栈实现队列 解法:两个栈实现队列 622. 设计循环队列

立志做一个高产且细节博主 1684

数字字母分离c语言,C语言顺序结构 -C语言实现数字分离(附带源码)

桐桐上幼儿园了,学会了 1 位数字的加法运算,妈妈想考核桐桐的运算能力,于是每次给出一个四位数的整数,让桐桐计算出各位上的数字。妈妈想请你帮她写一个程序,能够随机产生一个四位数的整数,同时给出其各位上的数字,这样她就能够一边做自己的事,一边考核桐桐了。问分析输入:随机产生一个四位数整数。输出:输出整数其各位数字。1) 首先用 C语言的数学库函数 rand( ) 产生一个随机的四位数...

weixin_42316286的博客 1122

力扣(LeetCode)刷简单+中等(第20期)

力扣(LeetCode)定期刷,每期10道,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

不脱发的程序猿 3558

高精度算法之加减乘除简介

.引言 在说高精度加减乘除运算之前,我们先搞明白什么是高精度运算? 高精度算法,属于处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我们统称为高精度数,高精度算法是用计算机对于超大数据的一种模拟加,减,乘,除,乘方,阶乘,开方等运算。对于非常庞大的数字无法在计算机中正常存储,于是,将这个数字拆开,拆成一位一位的,或者是...

weixin_44199149的博客 1369

Leetcode 88. 合并两个有序数组

目重述 给你两个按 非递减顺序 排列的整数数组 nums1 nums2,另有两个整数 m n ,分别表示 nums1 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。 示例 1: 输入:nums1 = [1,2

阳光大男孩!!!的博客 943

Leetcode - 罗马数字转整数

https://leetcode-cn.com/problems/roman-to-integer/ 目描述 罗马数字包含以下七种字符: I, V, X, L,C,D  M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D ...

ityanger的技术栈 2611

414. 第三大的数 第二次

第三大的数 给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。 示例 1: 输入:[3, 2, 1] 输出:1 解释:第三大的数是 1 。 示例 2: 输入:[1, 2] 输出:2 解释:第三大的数不存在, 所以返回最大的数 2 。 示例 3: 输入:[2, 2, 3, 1] 输出:1 解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。 此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。 提示: 1 <= nums.

Tzecto 807

力扣答案c语言,力扣(LeetCode)刷简单(第15期)-Go语言中文社区

目录力扣(LeetCode)定期刷,每期10道,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。第1:将整数转换为两个无零整数的要求如下:解答思路:一对一对筛选,若一组数值某个数存在含0组成,则跳过该组。回答(C语言):/*** Note: The returned array must be malloced, assume caller calls free(...

weixin_42783709的博客 520

Python电脑摄像头实时人脸检测程序代码 基于mediapipe人脸检测

# Python电脑摄像头实时人脸检测程序 基于mediapipe人脸检测使用 MediaPipe 库进行实时人脸检测的Python示例程序,写有详细中文注释。## 依赖确保已经安装了以下依赖:- Python 3.x- OpenCV (`pip install opencv-python`)- MediaPipe (`pip install mediapipe`)## 使用运行以下命令来启动程序:```bashpython face_detection.py```程序将会打开计算机默认摄像头并显示实时人脸检测结果。按下 'q' 键退出程序。## 功能- 实时人脸检测- 绘制人脸包围框关键点- 输出包围框位置关键点坐标到命令行- 显示帧率信息

上一篇: linux中的vim参数,linux下常用命令参数详解-vi
下一篇: 以下数值中 不能用作C语言标识符,C语言选择题
板哥空山建筑
博客等级 码龄8年 39粉丝 91原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值