交换
请编写一个算法,不用任何额外变量交换两个整数的值。
给定一个数组num,其中包含两个值,请不用任何额外变量交换这两个值,并将交换后的数组返回。
测试样例:
[1,2]
返回:[2,1]
# -*- coding:utf-8 -*-
class Swap:
def getSwap(self, num):
# write code here
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
返回:2
# -*- coding:utf-8 -*-
class Compare:
#如果符号为0,那么得到1,如果符号为1,那么得到0
def 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