解决leetcode第3768题.固定长度子数组中的最小逆序对数目

3768.固定长度子数组中的最小逆序对数目

难度:困难

问题描述:

给你一个长度为n的整数数组nums和一个整数k。

逆序对是指nums中满足i<j且nums[i]>nums[j]的一对下标(i,j)。

子数组的逆序对数量是指该子数组内逆序对的个数。

返回nums中所有长度为k的子数组中的最小逆序对数量。

子数组是数组中一个连续的非空元素序列。

示例1:

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

输出:0

解释:

我们考虑所有长度为k=3的子数组(下面的下标是相对于每个子数组而言的):

3,1,2\]有2个逆序对:(0,1)和(0,2)。 \[1,2,5\]有0个逆序对。 \[2,5,4\]有1个逆序对:(1,2)。 所有长度为3的子数组中,最小的逆序对数量是0,由子数组\[1,2,5\]获得。 示例2: 输入:nums=\[5,3,2,1\],k=4 输出:6 解释: 只有一个长度为k=4的子数组:\[5,3,2,1\]。 在该子数组中,逆序对为:(0,1),(0,2),(0,3),(1,2),(1,3),和(2,3)。 逆序对总数为6,因此最小逆序对数量是6。 示例3: 输入:nums=\[2,1\],k=1 输出:0 解释: 所有长度为k=1的子数组只包含一个元素,因此不可能存在逆序对。 因此最小逆序对数量为0。 提示: 1\<=n==nums.length\<=105 1\<=nums\[i\]\<=109 1\<=k\<=n #### 问题分析: 解决这个问题,只要解决好几个小问题就行了 一是对于一个数组a,统计其逆序对数目 二是对于一个给定的数组nums,将所有长度为k的子数组找出 三剩下的就是对所有长度为k的子数组分别求出其逆序对数目,统计其中数目最小的并输出 具体操作请参考程序内容 #### 程序如下: ```python #统计一个数组中逆序对数目并返回 def get_reverse_pairs(a): n=len(a) c=0 for i in range(n-1): for j in range(i,n): if a[i]>a[j]: c+=1 return c #将一个数组a分解为长度为k的子数组,并以列表的形式返回 def get_k_sub_array_from_a(a,k): n=len(a) t=[] for i in range(n-k+1): t.append(a[i:i+k]) return t #主程序 nums=eval(input('pls input nums=')) k=int(input('pls input k=')) t=[] lxd=get_k_sub_array_from_a(nums,k) print(f'长度为{k}的子数组有{lxd}') for i in lxd: c=get_reverse_pairs(i) print(f'{i}有{c}个逆序对') t.append(c) print(f'最小逆序对数量为{min(t)}') ``` #### 运行实例一 pls input nums=\[3,1,2,5,4

pls input k=3

长度为3的子数组有[[3, 1, 2], [1, 2, 5], [2, 5, 4]]

3, 1, 2\]有2个逆序对 \[1, 2, 5\]有0个逆序对 \[2, 5, 4\]有1个逆序对 最小逆序对数量为0 #### 运行实例二 pls input nums=\[3,4,2

pls input k=1

长度为1的子数组有[[3], [4], [2]]

3\]有0个逆序对 \[4\]有0个逆序对 \[2\]有0个逆序对 最小逆序对数量为0 #### 运行实例三 pls input nums=\[5,3,2,4

pls input k=2

长度为2的子数组有[[5, 3], [3, 2], [2, 4]]

5, 3\]有1个逆序对 \[3, 2\]有1个逆序对 \[2, 4\]有0个逆序对 最小逆序对数量为0

相关推荐
郝学胜-神的一滴11 小时前
干货版《算法导论》05:从集合接口到排序
开发语言·数据结构·c++·程序人生·算法·排序
BLSxiaopanlaile11 小时前
关于 lru 和 lfu算法的简单实现
算法
山屿落星辰11 小时前
cann-tools - 昇腾CANN 工具集使用指南
人工智能·pytorch·python
顾凌陵11 小时前
Python 数据可视化实战
开发语言·python·信息可视化
Serendipity_Carl11 小时前
爬虫实战进阶-穷游论坛网清洗与可视化分析
爬虫·python·数据可视化·数据清洗
AI技术控11 小时前
Long-range Brain Graph Transformer 论文解读:用长程依赖建模理解脑网络通信
人工智能·python·深度学习·分类
菜菜的顾清寒11 小时前
力扣Hot100(23)反转链表
算法·leetcode·链表
Michelle802311 小时前
基于随机森林的乳腺癌肿瘤分类实验
算法·随机森林·分类
开发者联盟league11 小时前
pip install出现报错ERROR: Cannot set --home and --prefix together
开发语言·python·pip
Yvonne爱编码11 小时前
机器学习---聚类四大算法完整实验教程(层次 / K-Means/GMM/ 谱聚类)
算法·机器学习·聚类