题解 | 旺仔哥哥转圈圈

旺仔哥哥转圈圈

https://www.nowcoder.com/practice/739afacabadd463d9b73b23514bb6d5d?tpId=383&tags=&title=&difficulty=0&judgeStatus=0&rp=0&sourceUrl=%2Fexam%2Foj%3FquestionJobId%3D10%26subTabName%3Donline_coding_page

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 计算出旺仔哥哥最后会站在哪位小朋友旁边
     * @param a int整型vector 第 i 个小朋友的数字是 a_i
     * @param m int整型 表示旺仔哥哥的移动次数
     * @return int整型
     */
    int stopAtWho(vector<int>& a, int m) {
        int n = a.size();
        int p = 1;                        // 初始位置是1
        for (int i = 1; i <= m; ++i) {  
            int current_pos = p - 1;      // 转换为0开始
            int step = a[current_pos];    // 读取移动步数

            int new_pos = (current_pos - step) % n; // 直接减,负数出来不怕

            if (new_pos < 0) {      // 如果出来是负数,毕竟是个环,直接+环长就能去到应该在的位置!
                new_pos += n;      // 加过去刚好是0开始标准的下标
            }
            p = new_pos + 1;       //换回1开始
        }
        return p;
    }
};

全部评论

相关推荐

头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
07-23 11:37
延安大学 C++
绷不住了,晚上十点发拒信,是还在加班吗这样一想挂了好像也没什么不好
码农索隆:这个都是真人发嘛,会用到机器人定时发嘛
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务