pythonindexof
㈠ 什么是36进制
三十六进制,是数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9,A-Z组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-35。
进制说明:
36进制是 0-F ()
㈡ 如何优雅地判断N个布尔值是否全部相等
假设数组定义为 {a_i:0le i < n}。
用 Array.prototype.indexOf() 可以搜寻x是否存在于数组,即判断 exists i(a_i=x)。如果 x 存在,返回该索引( i >= 0),如果不存在,该函数在返回 -1。
然后我们需要检查所有元素是否相等,那么等价于检查所有元素是否等于第一个元素,取反一下:forall i (a_i=a_0)
Leftrightarrow eg eg forall i (a_i=a_0)\
Leftrightarrow eg exists i(a_i e a_0)
由于问题需求刚好是布尔数组,所以 a_i e a_0 Leftrightarrow a_i= eg a_0,那么就可变换为: eg exists i (a_i= eg a_0)
用 Array.prototype.indexOf() 的好处是原生提供的,而且是很直接的做最多 n 次相等测试,所以应该比以脚本自行实现快。但这个解答仅限于布尔数组才能使用
一行(慢):return array.min() == array.max();
两行(居中):long n = array.count(true);
return n == array.size() || n == 0;
三行(平均快):return adjacent_find(array.begin(), array.end()
[](bool lhs, bool rh{ return lhs != rhs; }) == array.end();Java 运行环境JDK8boolean a = true;
boolean b = true;
boolean c = true;
boolean d = true;
boolean e = true;
boolean f = true;
boolean g = true;
boolean h = false;
System.out.println(Stream.of(a,b,c,d,e,f,g).collect(Collectors.toSet()).size() == 1); // true
System.out.println(Stream.of(a,b,c,d,e,f,g,h).collect(Collectors.toSet()).size() == 1); // false
放弃用bool改用bit。。
bitmap==0||!(bitmap<<(32-N))>>(32-N)==0&vec == |vec如果vec全0,那么得到0==0,表达式为真;如果vec全1,那么得到1==1,表达式为真;如果vec有0有1,那么得到0==1,表达式为假。另解(比较容易实现,但没有上面那个优雅):sum = SUM(vec)return sum == 0 || sum == len(vec)来一个强行python版~return sum(mylist) % len(mylist) == 0解释就是,求和时True为1,False为0,所以全部为false时sum为零,全部为True时sum等于list长度,只有在这两种情况下sum除以len才能余数为0。如果list中有true有false,那得到的数肯定大于零、小于list长度。arr.every(b => b === arr[0]);