力扣 | 2582递枕头 | 取余?滑动窗口?异曲同工?

很好理解的题

有n个人,1到n顺序排成一列

每个人传递枕头耗时1s,在传到两边的时候要反向传递

最开始从下标为1的张三开始传,试问经过t s后,枕头到了哪个人手里?

因为传递要考虑变向,即当传到n 下一个人就是 n-1 (方向由 递增到递减)

当传到1时,下一个人就是 2(方向由递减到递增)

当传完一个轮回,就代表着重新传递

所以,第一反应就是 用取余的,确定第t s 在哪个人手里

取余 可以理解为对中间偏移量进行等长划分,最后一部分可能正好划分完,也可能小于 等长偏移量

那这个偏移量是多少呢?简单分析,方向(向右),到了第n个人必须反向,那么向左的偏移量就是 n- 1(因为最开始就是从1开始的),反向,从n -1开始 到1 向左偏移量是 n -1 两边加起来 等长偏移量就是 2n-1

当取余后的值 x < n 方向为 向右 直接 x + 1 简单理解为只有 x s

当求余后的值 x >=n方向时,为向左 1 2 ...n n+1 2n-1 2n-2此刻x在后半段,所求的位置差等于 x到2n-1的偏移量 ,也就是x到终点2n-2的距离 为2n-2-x

cpp 复制代码
int  ans(int n, int t){
	int x = t %(2*n-2);
	if(x < n){
		return (x +1);
	}else
		return (2*n-2 -x);
}
相关推荐
朝朝辞暮i29 分钟前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
Evand J1 小时前
【MATLAB例程】三维RRT+APF避障路径规划与到达角(AOA)定位算法|三维路径优化与定位仿真例程
算法·matlab·路径规划·代码·定位·rrt·aoa
leikooo1 小时前
用餐厅和盘子理解栈和堆
java·数据结构·链表·rust
weixin_307779132 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
Ivanqhz2 小时前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
朝朝辞暮i3 小时前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
沙漠之主3 小时前
C++编程教学设计资料:从入门到实战的完整课程方案
java·前端·c++
朝朝辞暮i3 小时前
C++ 第 29 课:回调函数 Callback
开发语言·c++·算法
FPGA小徐3 小时前
PA1 基础设施(2)深度解析:NEMU 中 ITRACE、MTRACE、FTRACE、IRINGBUF、ETRACE、DIFFTEST 全解析
java·服务器·网络
Godspeed Zhao3 小时前
现代智能雷达技术14——算法(0)
线性代数·算法·雷达