解释:第 1 个小时的开始时刻,猫 B 移到位置 1 睡觉,第 2 个小时的开
始时刻,按照顺序,猫 B 将移到位置 2 睡觉,所以输出结果为 2
◼ 样例 2
输入:n = 3, k = 2
输出:3
解释:第 2 个小时的开始时刻,猫 A 和猫 B 都来到了位置 2,按照等级,猫 B 必须让出位置 2,前往位置 3 睡觉,所以输出结果为 3
package st;/*** @author Kaki Nakajima* @date 2020-05-15* @desc 猫午睡问题*/
public class CatSleeping {/*** 猫午睡问题* @param n 可移动的睡觉位置* @param k 几个小时时间内* @return 最后输出结果为猫 B 在第 k 小时的开始时刻所能占用的位置*/public static int findPosition(int n, int k){//分析1: 猫A 递减,猫B 递增//分析2: 当睡觉位置有交集时,猫A 跳到下一个位置//猫B 移动统计int maoBCount = 0;int maoAPosition = n; //猫A 位置int maoBPosition = 1; //猫B 位置//循环(时间)for (int i=k; k >0 ; k--) {maoBCount ++;maoAPosition --;//猫A 递减maoBPosition ++;//猫B 递增//循环位置if(maoAPosition == 1){maoAPosition = n;}if(maoBPosition >=n){maoBPosition = 1;}//交集的情况 (当睡觉位置有交集时,猫A 跳到下一个位置)if(maoAPosition == maoBPosition){maoBCount++;maoAPosition --;}}return maoBCount;}public static void main(String[] args) {//n = 4, k = 2... n = 3, k = 2System.out.println(findPosition(3,8));}
}
此处方法只是实现之一,如有更高效的方法可以在评论区留言哈~
码云地址直通车
欢迎码云,B站,ins 关注Kaki Nakajima
本文发布于:2024-02-04 22:58:55,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170718327060514.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |