解决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

相关推荐
Mr_Xuhhh1 分钟前
C++11实现线程池
开发语言·c++·算法
若水不如远方2 分钟前
分布式一致性(三):共识的黎明——Quorum 机制与 Basic Paxos
分布式·后端·算法
喵手3 分钟前
Python爬虫实战:城市停车收费标准自动化采集系统 - 让停车费透明化的技术实践(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·城市停车收费标准·采集城市停车收费数据·采集停车数据csv文件导出
无水先生4 分钟前
python函数的参数管理(01)*args和**kwargs
开发语言·python
py小王子6 分钟前
dy评论数据爬取实战:基于DrissionPage的自动化采集方案
大数据·开发语言·python·毕业设计
Pyeako8 分钟前
opencv计算机视觉--LBPH&EigenFace&FisherFace人脸识别
人工智能·python·opencv·计算机视觉·lbph·eigenface·fisherface
only-qi9 分钟前
leetcode24两两交换链表中的节点 快慢指针实现
数据结构·算法·链表
小陶的学习笔记12 分钟前
python~基础
开发语言·python·学习
多恩Stone12 分钟前
【3D AICG 系列-9】Trellis2 推理流程图超详细介绍
人工智能·python·算法·3d·aigc·流程图
sin_hielo13 分钟前
leetcode 110
数据结构·算法·leetcode