本文共 672 字,大约阅读时间需要 2 分钟。
交换
比较交换
请编写一个算法,不用任何额外变量交换两个整数的值。给定一个数组num,其中包含两个值,请不用任何额外变量交换这两个值,并将交换后的数组返回。测试样例: [1,2] 返回:[2,1]class Swap:
def getSwap(self, num):num[0] = num[0] ^ num[1] num[1] = num[0] ^ num[1] num[0] = num[0] ^ num[1] return num
比较
对于两个32位整数a和b,请设计一个算法返回a和b中较大的。但是不能用任何比较判断。若两数相同,返回任意一个。给定两个整数a和b,请返回较大的数。测试样例: 1,2 返回:2class Compare:
#如果符号为0,那么得到1,如果符号为1,那么得到0def flip(self,n):return 1^n#获取符号位,返回值1代表非负数,0代表负数def get_sign(self,n):return self.flip((n>>31)&1)def getMax(self,a,b): c = a-b scA = self.get_sign(c) scB = self.flip(scA) return a*scA+b*scB
转载于:https://blog.51cto.com/13545923/2054443