【发布时间】:2017-03-30 08:53:56
【问题描述】:
我是通过 codefights.org 和其他资源学习编码和学习的新手。我偶然发现了这个问题:
======
求给定排列的循环数。
示例
对于排列 = [1, 3, 2, 6, 4, 5],输出应该是 permutationCycles(permutation) = 3.*
int permutationCycles(int[] permutation) {
boolean[] inCycle = new boolean[permutation.length];
int result = 0;
for (int i = 0; i < permutation.length; i++) {
if (!inCycle[i]) {
int position = i;
while (!inCycle[position]) {
inCycle[position] = true;
position = //...// ;
}
result++;
}
}
return result;
}
任务是将 //...// 替换为正确的代码。我可以用自己的方式编写代码,但不使用布尔数组。我不明白的是布尔数组 inCycle 是如何连接到排列数组的。有人也可以向我解释一下这里的 if 循环是什么意思吗?提前致谢。
【问题讨论】:
标签: java arrays algorithm boolean