力扣75.颜色分类-C语言实现-中等难度题
题目
传送门
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
示例 1:
输入:nums = [2,0,2,1,1,0]
输出:[0,0,1,1,2,2]
示例 2:
输入:nums = [2,0,1]
输出:[0,1,2]
示例 3:
输入:nums = [0]
输出:[0]
示例 4:
输入:nums = [1]
输出:[1]
提示:
n == nums.length
1 = n = 300
nums[i] 为 0、1 或 2
来源:力扣(LeetCode)
解题
模板
void sortColors(int* nums, int numsSize){
}
分析
按找一个另外的思维理解,因为本题索要求的是按照红白蓝的顺序来进行一个尽可能靠近来整理颜色,而这个顺序有恰好是012代替的顺序,那么我们可以简单的理解以下题目的意思为按需排列数组元素,这样也可以实现按照元素的顺序排列并且是尽可能的靠近在一起,满足题目的要求。
原码
int cmp(int *a, int *b) {
return *a - *b;
}
void sortColors(int* nums, int numsSize){
qsort(nums, numsSize, sizeof(int), cmp);
return nums;
}
qsort是一个c语言里的排序函数在数组拆分题目里也用到过,有兴趣可以去看一下里面对于qsort()简单使用的介绍
运行结果
力扣75.颜色分类-C语言实现-中等难度题 相关文章
力扣1736. 替换隐藏数字得到的最晚时间-C语言实现-简单题
题目 传送门 给你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 表示)。 有效的时间为 00:00 到 23:59 之间的所有时间,包括 00:00 和 23:59 。 替换 time 中隐藏的数字,返回你可以得到的最晚有效时间。 示例 1: 输入:time =
力扣566. 重塑矩阵-C语言实现-简单题
题目 传送门 在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。 给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。 重构后的矩阵需要将原始矩阵的所
刷题-力扣-461
561. 数组拆分 I 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/array-partition-i/ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 题目描述 给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成
【题解】力扣448. 找到所有数组中消失的数字
题目来源 448. 找到所有数组中消失的数字 思路 方法一 原地修改 由于数组中的数字不会超过数组大小,所以可以在将所有正数作为数组下标,并将对应的数组乘以\(-1\)变为负数。仍为真数的位置就是没有出现的数字。 例: 原始数组:[4,3,2,7,8,2,3,1] 重置后为
力扣561. 数组拆分 I-C语言实现-简单题
题目 传送门 给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。 返回该 最大总和 。 示例 1: 输入:nums = [1,4,3,2] 输出:4 解释:所有可能的分法(忽略
【题解】力扣119.杨辉三角Ⅱ
题目来源 119. 杨辉三角 II 思路 方法一 杨辉三角的性质: 每行数字左右对齐,由1开始逐渐变大再变小,并最终回到1. 第\(n\)行(从\(0\)开始编号)的数字有\(n+1\)项,前\(n\)行共有\(\frac{n(n+1)}{2}\)个数。 第\(n\)行的第\(m\)个数(从\(0\)开始编号)可
【题解】力扣703.数据流中的第K大元素
题目来源 703. 数据流中的第 K 大元素 题目描述: 设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。 请实现 KthLargest 类: KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。 int
刷题-力扣-485
485. 最大连续1的个数 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/max-consecutive-ones/ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 题目描述 给定一个二进制数组, 计算其中最大连续1的个数。
力扣算法-2、两数相加-迭代与递归-java
给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例 1:输入:l1 = [2,4,3],
力扣算法-485-最大连续1的个数-动态规划
485. 最大连续1的个数给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。 两种