题目
思路
用双指针,从第一个小朋友开始一圈圈按顺时针方向遍历,到最后一个小朋友的那圈遍历完结束。
因为题目定义两个小朋友的距离为沿着圆圈顺时针走或者逆时针走的最近距离,所以在计算最远距离时要让当前两个小朋友的距离小于圆圈周长的二分之一,不然最短距离就会变成从逆时针方向开始计算,这是一个小坑
同时,计算的时候数组里第i个元素储存的是第(i+1)个小朋友到第(i+2)个小朋友的距离,所以代码23-25行是先+= distances[end]再让end指向下一个人,也是一个小坑
代码
#include <iostream>
#include <vector>
using namespace std;