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才是要移动的位数

res |= 1 << player[i];

所以说

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

你可能感兴趣的:(C语言基础,数组元素,数组元素查重,重复判断,移位操作)