2025-01-13:找出 K 秒后拿着球的孩子。用go语言,给定两个正整数 n 和 k,有 n 个编号从 0 到 n - 1 的孩子排成一队。
最开始,编号为 0 的孩子手中有一个球,并向右传递。
每秒,持球的孩子会将球传给旁边的孩子。
当球到达队列的任一端(即编号为 0 或 n - 1 的孩子)时,传球方向会反转。
请返回 k 秒后接到球的孩子的编号。
提示:
2 <= n <= 50。
1 <= k <= 50。
输入:n = 3, k = 5。
输出:1。
解释:
经过的时间 孩子队列;
0 [0, 1, 2];
1 [0, 1, 2];
2 [0, 1, 2];
3 [0, 1, 2];
4 [0, 1, 2];
5 [0, 1, 2]。
答案2025-01-13:
chatgpt[1]
题目来自leetcode3178。
大体步骤如下:1.初始化孩子队列,编号为0到n-1。
2.设立一个变量t,用来记录球传递的位置。
3.计算每秒传递一次球后的位置:
• 计算当前传球的位置t,取余数操作k % (n - 1)。• 如果经过k/(n-1)轮传球之后发现传球方向需反转,条件是(k/(n-1)) % 2 > 0,那么返回队列的倒数第二个位置n - t - 1,因为最后一个位置是编号为n-1的孩子,其实到该孩子手中的时候,传球方向会反转。• 否则,返回位置t即可。4.执行main函数,给定初始条件n=3,k=5,调用numberOfChild函数计算得到结果。
5.输出结果。
总的时间复杂度为O(1),因为无论n和k的取值如何,算法的执行时间不会随着n和k的增加而增加。
总的额外空间复杂度为O(1),因为除了几个变量外,没有使用额外的数据结构存储数据。
Go完整代码如下:package mainimport ( "fmt")func numberOfChild(n, k int) int { t := k % (n - 1) if k/(n-1)%2 > 0 { return n - t - 1 } return t}func main() { n := 3 k := 5 result := numberOfChild(n, k) fmt.Println(result)}
在这里插入图片描述
Rust完整代码如下:fn number_of_child(n: i32, k: i32) -> i32 { let t = k % (n - 1); if k / (n - 1) % 2 > 0 { return n - t - 1; } t}fn main() { let n = 3; let k = 5; let result = number_of_child(n, k); println!("{}", result);}
在这里插入图片描述
C完整代码如下:#include <stdio.h>int numberOfChild(int n, int k) { int t = k % (n - 1); if (k / (n - 1) % 2 > 0) { return n - t - 1; } return t;}int main() { int n = 3; int k = 5; int result = numberOfChild(n, k); printf("%d\n", result); return 0;}
在这里插入图片描述
C++完整代码如下:#include <iostream>int numberOfChild(int n, int k) { int t = k % (n - 1); if (k / (n - 1) % 2 > 0) { return n - t - 1; } return t;}int main() { int n = 3; int k = 5; int result = numberOfChild(n, k); std::cout << result << std::endl; return 0;}
在这里插入图片描述
Python完整代码如下:def number_of_child(n, k): t = k % (n - 1) if (k // (n - 1)) % 2 > 0: return n - t - 1 return tif __name__ == "__main__": n = 3 k = 5 result = number_of_child(n, k) print(result)
在这里插入图片描述
JavaScript完整代码如下:function numberOfChild(n, k) { const t = k % (n - 1); if (Math.floor(k / (n - 1)) % 2 > 0) { return n - t - 1; } return t;}const n = 3;const k = 5;const result = numberOfChild(n, k);console.log(result);
在这里插入图片描述
Java完整代码如下:public Main { public static int numberOfChild(int n, int k) { int t = k % (n - 1); if (k / (n - 1) % 2 > 0) { return n - t - 1; } return t; } public static void main(String[] args) { int n = 3; int k = 5; int result = numberOfChild(n, k); System.out.println(result); }}
在这里插入图片描述
引用链接[1] chatgpt: https://chatbotsplace.com/?rc=nnNWSCJ7EP