LeetCode
来源:互联网 发布:安卓手机优化软件 知乎 编辑:程序博客网 时间:2024/06/08 04:47
解题代码:
classSolution {
public:
int arrayNesting(vector<int>&nums) {
int n=nums.size();
int res=0;
for(int i=0;i<n;i++){
if(nums[i]!=n){
int count=0;
int t=i;
while(nums[t]!=n){
count++;
int k=nums[t];
nums[t]=n;
t=k;
}
res=max(res,count);
}
}
return res;
}
};
解题思路:
题目中有一个数组nums[n],里面分别是0~n-1这n个整数,并且是随机分布的。而实际上题目中所说的S[k],指的就是对于任何一个属于S[k]的元素a,nums[a]也都必然在S[k]中,并且去掉S[k]中任何元素,都将使得上述条件不满足。而题目要求的就是最大的S[k]的元素个数。
于是乎,我从0开始,对于每个0≤i≤n-1,都找到nums[i], nums[nums[i]], nums[nums[nums[i]]]……直至找到i,则这些元素组合起来就是S[i],而根据定义,也等于S[nums[i]],S[nums[nums[i]]]……为了避免重复操作,在每找到一个S[i]中的元素时,我将其赋值为n,使得我在下次遇到的时候不需要做无用功。然后把找到的S[i]中的元素个数进行相比,得出最大的。
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- nginx-fpm设置
- 统一接口调用
- 无序数组中求中位数
- Python多线程
- JavaScript字符串indexOf方法浅析
- LeetCode
- 2016年校招编程笔试题汇总 考点:冒泡排序(稳定排序)、不考虑大小写特殊情况、判断字符串是否包含另一个字符串、判断某个字符串中含有某个字符串的个数
- 支持向量机详解
- 康托展开和逆康托展开
- html5移动开发屏幕宽度相关概念
- TensorFlow深度学习框架
- RateLimit
- 给初学者的RxJava2.0教程(三)
- jdbcTemplate 实现查询返回list