NC139. 孩子们的游戏(圆圈中最后剩下的数)
描述
示例1
输入:
5,3
输出:
3
示例2
输入:
2,3
输出:
1
说明:
有2个小朋友编号为0,1,第一次报数报到3的是0号小朋友,0号小朋友出圈,1号小朋友得到礼物示例3
输入:
10,17
输出:
2
C++ 解法, 执行用时: 2ms, 内存消耗: 356KB, 提交时间: 2021-05-09
class Solution { public: int LastRemaining_Solution(int n, int m) { if(!n || !m) return -1; int res(0); for(int i(2); i<=n; i++) res = (res+m)%i; return res; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 356KB, 提交时间: 2020-08-13
class Solution { public: int LastRemaining_Solution(int n, int m) { if( n <= 0 || m <= 0 ) return -1; int ans = 0 ; for(int i = 2; i <= n ; i++){ ans = ( ans + m ) % i; } return ans; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 360KB, 提交时间: 2020-09-23
class Solution { public: int LastRemaining_Solution(int n, int m) { if(n<1) return -1; int last=0; for(int i=2;i<=n;i++) { last=(last+m)%i; } return last; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 360KB, 提交时间: 2020-09-08
class Solution { public: int LastRemaining_Solution(int n, int m) { if(n < 1 || m < 1) return -1; if(n == 1) return 0; int last = 0 ; for(int i = 2; i <= n; i++) last = (last + m) % i; return last; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 360KB, 提交时间: 2020-08-28
class Solution { public: /* int func(int n, int m){ if (n == 1) return 0; return (m + func(n - 1, m)) % n; // (m % n + func(n - 1, m)) % n; } int LastRemaining_Solution(int n, int m) { if (n < 1 || m < 1) return -1; return func(n, m); } */ //非递归实现 /* f(1)=0 f(2)=(m%2 + f(1))%2 */ int LastRemaining_Solution(int n, int m) { if (n < 1 || m < 1) return -1; int index = 0; //f(1,m) for (int i = 2; i <=n; i ++){ index = (index + m) % i; } return index; } };