565. Array Nesting

问题:

求一个数列中的,最大嵌套子数列长度

Example 1:
Input: A = [5,4,0,3,1,6,2]
Output: 4
Explanation: 
A[0] = 5, A[1] = 4, A[2] = 0, A[3] = 3, A[4] = 1, A[5] = 6, A[6] = 2.

One of the longest S[K]:
S[0] = {A[0], A[5], A[6], A[2]} = {5, 6, 2, 0}

  

解法:

依次遍历nums,

对每一个当前数值,在进行循环查找nest的下一个数字,j=nums[i], next-> nums[j]

将查过的nums[i]标为-1,以防重复查询。

 

参考代码:

 1 class Solution {
 2 public:
 3     int arrayNesting(vector<int>& nums) {
 4         int res=0;
 5         for(int i=0; i<nums.size(); i++){
 6             int len=0;
 7             for(int j=i; j<nums.size() && nums[j] >=0;){
 8                 int k = j;
 9                 j=nums[j];
10                 nums[k] = -1;
11                 len++;
12             }
13             res=max(res, len);
14         }
15         return res;
16     }
17 };

 

posted @ 2020-03-29 15:37  habibah_chang  阅读(149)  评论(0编辑  收藏  举报