题解 | 旺仔哥哥转圈圈

旺仔哥哥转圈圈

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;
    }
};

全部评论

相关推荐

allin秋招的单身...:我投过这家 上来就发个设计图给我,让我做好发到他邮箱
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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