算法题中将二维数据合并为一维 来解决二维数据无法放入集合的问题 附将2个int合并为1个long的java代码

二维数据无法直接放进集合,通过集合在短时间内判断是否存在。

可以将二维数据合并为一维,然后对这个一维数据进行处理

比如可以将两个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处理,导致结果错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值