题目内容
曾经有一个名叫塔子哥的年轻程序员,他梦想成为一名优秀的算法工程师。一天,他遇到了这样一个问题:给定一个由 n 个非负整数组成的数组,他每次可以选择其中一个数的二进制表示中的某一位进行取反操作,问他最少需要多少次操作才能使得这个数组中的所有数相等。
思路:贪心
容易发现,从二进制的视角来看,只要每一个bit都变成一样即可。所以可以分别独立的考虑每一位的最小代价。那么对于每一个bit , 我们要么将所有的0 都变成 1 , 要么将所有的1 都变成 0. 所以最小代价就是0,1 中出现次数少的那个。