【leetcode】565. Array Nesting

技术【leetcode】565. Array Nesting 【leetcode】565. Array NestingYou are given an integer arraynumsof lengt

565 .数组嵌套

给你一个整数数组,长度是[0,n - 1]范围内数字的排列。

你应该建立一个集合[k]={nums[k],nums[nums[k]],nums[nums[k]]],}遵守以下规则:

第一个元素ins[k]从选择elementnums[k]ofindex=k开始。

下一个元素ins[k]应该是benums[nums[k]],然后是nums[nums[nums[k]]]等等。

我们就在重复元素出现之前停止添加。

返回集合[k]的最长长度。

1、暴力求解方法: 时间复杂度高了 超时了

解决方案类{

公众号:

内部数组列表(矢量nums){ 0

//先用暴力法写这样写时间复杂度太高了相当于o(n^2)

int n=nums。size();

int len=INT _ MIN

for(int I=0;在;(一)

{

无序_ setint res

int索引=I;

while(!res.count(nums[index])

{

RES . insert(nums[索引]);

index=nums[index];

}

len=max(len,(int)RES . size());

}

返回透镜;

}

};

分析:暴力法是对nums中的每一个数字都作为起始数字开始进行数组嵌套嵌套

对于已经遍历过的数字就不需要让他作为开头进行遍历因为其之后的检索路径已经是之前的一个子集合

同时检索的过程中也不需要设置只需要存头数字如果当前数字和头数字一样那么就结束了

2、按照这两个思路 对代码进行优化 用一个dp数组进行存储

解决方案类{

公众号:

内部数组列表(矢量nums){ 0

//先用暴力法写这样写时间复杂度太高了相当于o(n^2)

int n=nums。size();

int len=INT _ MIN

无序_ setint dp//用于存储哪些结点已经访问过了

for(int I=0;在;(一)

{

int索引=I;

if(dp.count(索引))继续;

//DP。插入(索引);//没有访问存储当前路径

无序_ setint res

while(!res.count(nums[index])

{

RES . insert(nums[索引]);

dp.insert(索引);

index=nums[index];

}

len=max(len,(int)RES . size());

}

返回透镜;

}

};

3、取消存储数据的 res 直接存访问的头结点

解决方案类{

公众号:

内部数组列表(矢量nums){ 0

//先用暴力法写这样写时间复杂度太高了相当于o(n^2)

int n=nums。size();

int len=INT _ MIN

无序_ setint dp//用于存储哪些结点已经访问过了

for(int I=0;在;(一)

{

int索引=I;

if(dp.count(索引))继续;

//DP。插入(索引);//没有访问存储当前路径

int front=索引

int tmp _ len=1;

而(前面!=nums[index])

{

//RES . insert(nums[index]);

dp.insert(索引);

index=nums[index];

tmp _ len

}

len=max(len,tmp _ len);

}

返回透镜;

}

};

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/107447.html

(0)

相关推荐

  • express框架

    技术express框架 express框架Express框架
    Express简化了关于NodeJS应用的开发
    官网地址:https://www.expressjs.com.cn/使用npm instal

    礼包 2021年10月19日
  • Spring事务传播机制是什么

    技术Spring事务传播机制是什么这篇文章将为大家详细讲解有关Spring事务传播机制是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。传播性行为分为以下几种PROPA

    攻略 2021年12月2日
  • 手环怎么连接手机,智能手环怎么和手机配套

    技术手环怎么连接手机,智能手环怎么和手机配套跑步的时候不需要带着手机,只需戴上智能手环即可,除了第一次开机后,需要连上手机同步时间、设置个人体重身高、设置目标、久坐提醒、闹钟外,其余时候可以不用连手机的手环怎么连接手机。

    生活 2021年11月1日
  • 如何掌握static关键字

    技术如何掌握static关键字本篇内容介绍了“如何掌握static关键字”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!“

    攻略 2021年10月22日
  • 秦朝多少年历史,秦朝建立到灭亡多长时间

    技术秦朝多少年历史,秦朝建立到灭亡多长时间秦朝(公元前221年-公元前207年) ,是由战国后期的秦国发展起来的中国历史上第一个大一统王朝,传三世,共两帝一王,国祚共十四年秦朝多少年历史。秦国原为周朝的一个诸侯国,到秦始

    生活 2021年10月30日
  • jquery如何使得div消失

    技术jquery如何使得div消失这篇文章主要讲解了“jquery如何使得div消失”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery如何使得div消失”吧!

    攻略 2021年11月17日