首页 > 试题广场 >

数组中的最长连续子序列

[编程题]数组中的最长连续子序列
  • 热度指数:37816 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 3,4,5,6为连续的自然数)

数据范围: ,数组中的值满足
要求:空间复杂度 ,时间复杂度
示例1

输入

[100,4,200,1,3,2]

输出

4
示例2

输入

[1,1,1]

输出

1

备注:

头像 数据结构和算法
发表于 2021-07-06 09:18:09
精华题解 先排序 因为数组是无序的,如果要想找出最长的连续序列(这里序列的顺序可以打乱),我们最容易想到的就是先对数组进行排序,然后再查找。 使用一个变量count来记录当前有序序列的长度。 如果当前元素比前一个大1,说明他们可以构成连续的序列,count就加1。 如果相等就跳过。 否则就不能构成连续的 展开全文
头像 LaN666
发表于 2020-12-06 20:29:44
题目思路:给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 3,4,5,6为连续的自然数)。 例如: 输入:[100,4,200,1,3,2]那么很明显我们能够知道1234这是连续的,所以最长的子序列则为4。 所以这道题目的关键就是找到连续的子序列。 方法一:使 展开全文
头像 LifelongCode
发表于 2021-01-16 14:17:33
方法1:排序方法2:Set方法3:哈希表方法4:并查集 解法1:排序+统计 排序数组 统计连续序列长度:遇到重复元素跳过;遇到不连续元素重置;遇到连续元素加一并更新max import java.util.*; public class Solution { /** * max incre 展开全文
头像 yShane
发表于 2021-11-05 16:21:46
数组中的最长连续子序列python实现: # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # max increasing subsequence # @param arr int整型一维数组 the array # @return int整型 # class 展开全文
头像 阿尼亚瓦库瓦库
发表于 2021-06-27 12:23:44
import java.util.*; public class Solution { /** * max increasing subsequence * @param arr int整型一维数组 the array * @return int整型 展开全文
头像 小陆要懂云
发表于 2021-08-15 15:26:29
int MLS(vector<int>& arr) { // write code here if(arr.empty()) return 0; int longest=1; int coun 展开全文
头像 青叶摩卡
发表于 2023-06-06 09:28:09
class Solution { public: /** * max increasing subsequence * @param arr int整型vector the array * @return int整型 */ int MLS(ve 展开全文
头像 Surtr1
发表于 2024-05-13 22:30:53
class Solution { public: int MLS(vector<int>& arr) { // write code here if(arr.empty()) return 0; int l 展开全文
头像 WA_on_test_233
发表于 2021-07-17 16:17:53
认真读题可以发现,本题中数之间的相对位置并不重要,于是我们可以想到将它们按权值排序。同时,由于相同的数字并不能同时出现在答案中,所以可将排序后的数列去重。 考虑枚举排序后的数列,假设当前枚举到 ,记 表示以 为结尾的最长连续子序列。可以发现,如果 ,那么该序列的长度可以 ,否则只能重新开始计算。 展开全文
头像 执子一白
发表于 2020-12-09 17:59:58
认认真真写了了并查集没过,超时了哈哈。看了下大家的思路,嗯果然 简简单单用个 Set 就行 import java.util.*; public class Solution { /** * max increasing subsequence * @param ar 展开全文
头像 牛客449560839号
发表于 2021-08-23 21:48:04
package org.example.test; public class MLSTest { public static void main(String[] args) { int[] arr = {1, 2, 3, 5, 6, 7, 8, 9, 1, 2, 3, 展开全文

问题信息

难度:
109条回答 6605浏览

热门推荐

通过挑战的用户

查看代码
数组中的最长连续子序列