目录
1、颜色分类
2、快速排序
3、数组中的第K个最大元素
4、库存管理III
5、排序数组
6、交易逆序对的总数
7、计算右侧小于当前元素的个数
8、翻转对
给定一个包含红色、白色和蓝色、共 个元素的数组 ,原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
我们使用整数 、 和 分别表示红色、白色和蓝色。
必须在不使用库内置的 sort 函数的情况下解决这个问题。
示例 1:
输入:nums = [2,0,2,1,1,0] 输出:[0,0,1,1,2,2]示例 2:
输入:nums = [2,0,1] 输出:[0,1,2]
给你一个整数数组 ,请你将该数组升序排列。
你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 ,并且空间复杂度尽可能小。
示例 1:
输入:nums = [5,2,3,1] 输出:[1,2,3,5]示例 2:
输入:nums = [5,1,1,2,0,0] 输出:[0,0,1,1,2,5]
给定整数数组 和整数 ,请返回数组中第 个最大的元素。
请注意,你需要找的是数组排序后的第 个最大的元素,而不是第 个不同的元素。
你必须设计并实现时间复杂度为 的算法解决此问题。
示例 1:
输入: k = 2 输出: 5示例 2:
输入: k = 4 输出: 4
仓库管理员以数组 形式记录商品库存表,其中 表示对应商品库存余量。请返回库存余量最少的 个商品余量,返回 顺序不限。
示例 1:
输入:stock = [2,5,7,4], cnt = 1 输出:[2]示例 2:
输入:stock = [0,2,3,6], cnt = 2 输出:[0,2] 或 [2,0]
给你一个整数数组 ,请你将该数组升序排列。
你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 ,并且空间复杂度尽可能小。
示例 1:
输入:nums = [5,2,3,1] 输出:[1,2,3,5]示例 2:
输入:nums = [5,1,1,2,0,0] 输出:[0,0,1,1,2,5]
在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」。请设计一个程序,输入一段时间内的股票交易记录 ,返回其中存在的「交易逆序对」总数。
示例 1:
输入:record = [9, 7, 5, 4, 6] 输出:8 解释:交易中的逆序对为 (9, 7), (9, 5), (9, 4), (9, 6), (7, 5), (7, 4), (7, 6), (5, 4)。
给你一个整数数组 ,按要求返回一个新数组 。数组 有该性质: 的值是 右侧小于 的元素的数量。
示例 1:
输入:nums = [5,2,6,1] 输出: 5 的右侧有 2 个更小的元素 (2 和 1) 2 的右侧仅有 1 个更小的元素 (1) 6 的右侧有 1 个更小的元素 (1) 1 的右侧有 0 个更小的元素示例 2:
输入:nums = [-1] 输出:[0]示例 3:
输入:nums = [-1,-1] 输出:[0,0]
给定一个数组 ,如果 且 我们就将 称作一个重要翻转对。
你需要返回给定数组中的重要翻转对的数量。
示例 1:
输入: [1,3,2,3,1] 输出: 2示例 2:
输入: [2,4,3,5,1] 输出: 3