0
点赞
收藏
分享

微信扫一扫

LeetCode 5.4每日一题

zibianqu 2022-05-04 阅读 103

一、题目链接

二、题目描述

三、解题思路

        (1)思路1:运用队列来解决本题,按照题目模拟入栈、出栈即可
        (2)思路2:运用约瑟夫环的思想来解本题。

四、源码

1.思路1:

class Solution {
public:
    int findTheWinner(int n, int k) {
          queue<int> q;
          for(int i =1;i<=n;++i){
              q.push(i);
          }
          int cnt =k;
          while(q.size()>1){
              while(--cnt){
                  q.push(q.front());
                  q.pop();
              }
              q.pop();
              cnt =k;
          }
          return q.front();
    }
};

2.思路2:

class Solution {
public:
    int findTheWinner(int n, int k) {
         if (n <= 1){ 
            return n;
         }
        int ans = (findTheWinner(n - 1, k) + k) % n;
        return ans == 0 ? n : ans;
    }
};
举报

相关推荐

0 条评论