老师,问一道题

来源:3-2 改变变量定义,依然可以写出正确的算法

weixin_慕仰6475988

2020-03-05

老师,我想问下
for (int i = 0; i < (sum/k*k); i++)//处理尾巴前的节点
result[i] = list[i / k * k + k - 1 - i % k];
这里的list[]里面这个索引写法,怎么解释得到的?

#include
#include
using namespace std;
int main()
{
int first, k, n, sum = 0;
cin >> first >> n >> k;
int temp, data[100005], next[100005], list[100005], result[100005];
for (int i = 0; i < n; i++)
{
cin >> temp;
cin >> data[temp] >> next[temp];
}
while (first != -1)
{
list[sum++] = first;
first = next[first];
}
for (int i = 0; i < sum; i++)
result[i] = list[i];
//
for (int i = 0; i < (sum/k*k); i++)//处理尾巴前的节点
result[i] = list[i / k * k + k - 1 - i % k];
for (int i = 0; i < sum - 1; i++) //打印数据,对于最后的数据额外处理
printf("%05d %d %05d\n", result[i], data[result[i]], result[i + 1]);
printf("%05d %d -1", result[sum - 1], data[result[sum - 1]]);
return 0;
}

写回答

1回答

liuyubobobo

2020-03-06

抱歉,这个课程的问答区只回答 Leetcode 相关的问题。Leetcode 上已经有 超过 1000 个问题,我相信组一行爱算法面试的方方面面了。精力有限,我无法做到同学们随便拿出一个算法题,我就做出解答,请谅解。


尤其是你的这种问题,已经有了别人的代码,可以尝试自己调试跟踪,理解代码的计算过程的含义。如果还有问题,请找代码的原作者进行探讨。


继续加油!:)

0
1
weixin_慕仰6475988
好的,谢谢bobo老师.
2020-03-06
共1条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程