解决leetcode第3934题最短唯一子数组

3934.最短唯一子数组

难度:困难

问题描述:

给你一个整数数组nums。

找出nums中与其他任何子数组均不相同的子数组的最小长度。返回一个整数,表示此类子数组的最小可能长度。

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

如果两个子数组具有相同的长度,并且对应位置的元素也相同,则认为这两个子数组是相同的。

示例1:

输入:nums=[3,3,3]

输出:3

解释:

长度为1的子数组:[3]→出现3次

长度为2的子数组:[3,3]→出现2次

长度为3的子数组:[3,3,3]→出现1次

子数组[3,3,3]是唯一的,因此最小唯一子数组的长度为3。

示例2:

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

输出:1

解释:

长度为1的子数组:

2\]→出现2次 \[1\]→出现1次 \[3\]→出现2次 子数组\[1\]是唯一的,因此最小唯一子数组的长度为1。 示例3: 输入:nums=\[1,1,2,2,1

输出:2

解释:

长度为1的子数组:

1\]→出现3次 \[2\]→出现2次 长度为2的子数组: \[1,1\]→出现1次 \[1,2\]→出现1次 \[2,2\]→出现1次 \[2,1\]→出现1次 至少有一个长度为2的子数组是唯一的,因此最小唯一子数组的长度为2。 提示: 1\<=nums.length\<=10\*\*5 1\<=nums\[i\]\<=10\*\*5 #### 问题分析: 本问题首先要解决如何在一个整数数组nums中找出所有子数组的问题,函数get_all_sub_array(nums)实现了这一功能,其次是在这些子数组中找出只出现一次的子数组,这样就保证了这些找出的子数组具有唯一性,最后在这些具有唯一性的子数组中找出最短长度即为问题的解。 #### 程序如下: ```python #找出一个数组nums中所有的子数组并返回 def get_all_sub_array(nums): n=len(nums) a=[] for i in range(n): for j in range(i+1,n+1): b=nums[i:j] a.append(b) return a #主程序 nums=eval(input('pls input nums=')) t=get_all_sub_array(nums) b=[] for i in t: if t.count(i)==1: b.append(i) c=min(list(len(x) for x in b)) print(c) ``` #### 运行实例一 pls input nums=\[1,2,3,3,4

1

运行实例二

pls input nums=[1,2,1,2,2,3]

1

运行实例三

pls input nums=[2,3,2,3,2]

3

相关推荐
NashSKY4 小时前
EPnP 算法详解
算法·矩阵分解·多视图几何·射影几何
小O的算法实验室4 小时前
2026年SEVC,自适应模因算法+复杂约束条件下多无人机协同任务分配,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
iiiiyu4 小时前
面向对象和集合编程题
java·开发语言·前端·数据结构·算法·编程语言
xiaoxiaoxiaolll4 小时前
Light首次发表:动量空间穆勒矩阵偏振测量,破解纳米手性结构表征难题
人工智能·算法
WL_Aurora4 小时前
Python 算法基础篇之查找算法(二):斐波那契查找、分块查找与哈希查找
python·哈希算法·查找
变量未定义~4 小时前
最长回文子串
数据结构·算法
牙牙要健康4 小时前
Windows 下为 VSCode 配置 Anaconda:从零安装 Python 环境到完整配置教程
windows·vscode·python
代码中介商4 小时前
AVL树:自平衡二叉搜索树的奥秘
数据结构
财经资讯数据_灵砚智能4 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年5月17日
大数据·人工智能·python·信息可视化·自然语言处理