【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)

相关推荐

  • Matplotlib可视化最有价值的图表有哪些

    技术Matplotlib可视化最有价值的图表有哪些这篇文章主要为大家展示了“Matplotlib可视化最有价值的图表有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mat

    攻略 2021年12月8日
  • C语言----位运算,进阶篇二十六)

    技术C语言----位运算,进阶篇二十六) C语言----位运算(进阶篇二十六)作用在小内存时代,经常把一个字节分成好几份来用,以达到节约内存的目的。现在经常用于网络数据传输,单片机领域……。注意:※在进

    礼包 2021年11月1日
  • nginx如何处理request body参数配置

    技术nginx如何处理request body参数配置这篇文章主要介绍nginx如何处理request body参数配置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!通常情况下,nginx与客户端

    攻略 2021年11月21日
  • 如何解析element-ui中upload组件传递文件及其他参数的问题

    技术如何解析element-ui中upload组件传递文件及其他参数的问题如何解析element-ui中upload组件传递文件及其他参数的问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解

    攻略 2021年11月9日
  • 7272好看动漫排行,欧美新番女性最新排行是怎样的

    技术7272好看动漫排行,欧美新番女性最新排行是怎样的近日,外媒Anime Trending公布了关于“2020年春季新番动画第三周女性角色人气排行榜”,简单来说就是本周的“老婆榜”,想知道自己“老婆”的人气在欧美那边高

    生活 2021年10月26日
  • VB.NET转换形态的方法有哪些

    技术VB.NET转换形态的方法有哪些这篇文章将为大家详细讲解有关VB.NET转换形态的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。VB.NET经过长时间的发展,很多用户都很

    攻略 2021年12月1日