问题:
求一个数列中的,最大嵌套子数列长度
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 };