C语言开篇->关于对数组元素的查重

对数组元素的查重

传入一个数组指针 +数组元素的个数
假如数组arr[5] = {1,3,3,4,5}
int checkRank(int * player, int n)
{
	int i, res = 0;
	for (i = 0; i < n; i++)
	{
		res |= 1 << player[i];
	}
	return res == 0x3e;
}
  1. 这里的移位操作,可能会出现不太清楚的地方
  2. A>>B
    这个>> 的A是被移位的数,而后面的B是要移动的位数
  3. E<<D
    这个<<是同理,D才是要移动的位数

res |= 1 << player[i];

所以说

这里的player[i]的不同就意味着要移动1的位数不同,那么与上一个数 ‘或’ 一下,就会有 i 个1在里面,如果数组中存的数字是连续不同数字那么,res |= 1 << player[i];的连续结果就会有
这么多个1,可以算预期大小,这样进行逻辑运算,就会返回有无重复值.

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值