二维数据无法直接放进集合,通过集合在短时间内判断是否存在。
可以将二维数据合并为一维,然后对这个一维数据进行处理
比如可以将两个int数据合并为一个long数据
比如对于多个坐标(x,y),无法直接加入集合,而将坐标转化为long之后就可以放入集合,并借助集合的特性在O(1)时间内判断某坐标是否存在。
相关题目
874. 模拟行走机器人
https://leetcode-cn.com/problems/walking-robot-simulation/
这道题通过合并坐标为long来快速判断坐标是否碰到障碍。
将两个int合并为一个long
不管x和y是正负都有效:
public long encode (int x,int y) {
long tmpX=(long)x;
long tmpY=(long)y;
tmpX<<=32;
tmpY&=0x00000000ffffffffL;//后边要加L,否则会出错
long tmp=tmpX|tmpY;
return tmp;
}
tmpY&=0x00000000ffffffffL;
中的0x00000000ffffffffL
一定要加L否则会被当做int处理,导致结果错误