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

相关推荐

  • 有哪些类代理的方式

    技术有哪些类代理的方式这篇文章主要介绍“有哪些类代理的方式”,在日常操作中,相信很多人在有哪些类代理的方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些类代理的方式”的疑惑有所帮助!

    攻略 2021年10月26日
  • 怎么搭建Mac Laravel docker sail

    技术怎么搭建Mac Laravel docker sail本篇内容介绍了“怎么搭建Mac Laravel docker sail”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一

    攻略 2021年11月16日
  • flink 获取kafka数据(使用flink将数据写入到kafka)

    技术Flink中如何进行TableAPI 、SQL 与 Kafka 消息获取这篇文章将为大家详细讲解有关Flink中如何进行TableAPI 、SQL 与 Kafka 消息获取,文章内容质量较高,因此小编分享给大家做个参

    攻略 2021年12月15日
  • 鳄鱼属于哺乳动物吗,哺乳动物一定是胎生的吗

    技术鳄鱼属于哺乳动物吗,哺乳动物一定是胎生的吗否鳄鱼属于哺乳动物吗。1.现代观点认为,哺乳动物不是由爬行动物进化来的,哺乳动物祖先和现代爬行动物以及鸟类的祖先是两条单独的进化路线。哺乳动物祖先属于广义上的爬行动物,但这种

    生活 2021年10月23日
  • 手机APP怎么远程控制树莓派

    技术手机APP怎么远程控制树莓派手机APP怎么远程控制树莓派,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。手机APP远程控制三步快速连接树莓

    攻略 2021年11月19日
  • 塑料三角烧瓶,三角烧瓶和三角瓶的区别

    技术塑料三角烧瓶,三角烧瓶和三角瓶的区别一塑料三角烧瓶、应用领域区别:1、三角瓶多用于生物培育菌种实验,有盖。2、三角烧瓶即锥形瓶是化学实验中常见仪器,多无盖,可加热,用于化学实验。
    二、外形区别:
    3、锥形瓶一般来说

    生活 2021年10月26日