本文共 6446 字,大约阅读时间需要 21 分钟。
一个颇有好感的爱豆今天入伍了,人品和才华都没的说,但是因为这样或那样的原因,最终不得已提前进了部队,挺心疼他的。明年年底见吧。
昨天刷B站,看到国内一个练习生选秀节目中舞蹈导师批评国内练习生各种借口各种不努力,不禁感慨国内娱乐圈来钱太容易了。韩国爱豆生存压力大,每年出道的团很多,但是最后活下来的就那么几个。所以为了成功,他们需要不断努力不停练习,最终的表现和国内高下立判。 环境是很大的一个方面,类比于特征工程,是人(模型)表现出来的上限。 最近听闻谁谁谁要去读博了,谁谁谁准备把工作辞职了去读研还是蛮感慨的,原先认为找到一份好工作安逸地过一生就好,现在发现并不是如此。可能人要离开舒适圈才能更好地打磨自己的人生吧。 一辈子说长也长,说短也就那么一瞬。就活到哪算哪,活到啥时候算啥时候吧。来看下Leetcode中Tag为的题目
注:这题用位操作的方式太诡异了,我还是倾向于用hash table来完成,所以没有列入答案。 在Solutions里暂时没有发现位操作的解答,自己也没有想到合适的解法,暂时保留。[Leetcode190] :将数的二进制表示转置, Easy
[Leetcode 231] :判断一个数是否是2的指数,Easy
思路:判断 n & (n-1) = 0class Solution(object): def hammingWeight(self, n): """ :type n: int :rtype: int """ count=0 while(n): n = n&(n-1) count = count +1 return count
思路:利用0^a = a, a^a = 0的性质
class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ bitArrays = [0]*33 for num in nums: i,flag = 0,1 if num<0: num = -num bitArrays[32]+=1 while(i<32): if num & flag: bitArrays[i]+=1 flag = flag<<1 i+=1 i, ret,flag = 0,0, 1 while(i<32): if bitArrays[i]%3: ret+=flag flag=flag<<1 i+=1 if bitArrays[32]%3: ret = -ret return ret
[Leetcode 169] :有个数在数组中出现了至少n/2次,求该数,Easy
思路:开一个长度为32的数组,统计每个数组中1的个数[Leetcode 371] :不用加减法实现两数之和,Easy
思路:加法是异或,进位是与<<1,Python需要越界检查# -*- coding:utf-8 -*-class Solution: def Add(self, a, b): while(b): a,b = (a^b) & 0xFFFFFFFF,((a&b)<<1) & 0xFFFFFFFF return a if a<=0x7FFFFFFF else ~(a^0xFFFFFFFF)
class Solution(object): def readBinaryWatch(self,num): ret=[] for h in range(12): for m in range(60): if bin(h).count('1')+bin(m).count('1') == num: if m<10: ret.append(str(h)+':'+'0'+str(m)) else: ret.append(str(h)+':'+str(m)) return ret
[Leetcode 405] :将一个整数转化为16进制表示,Easy
思考:注意负数的二进制表示为其正数的反码+1[Leetcode 476] :求某个数的补码形式,Easy
class Solution(object): def findComplement(self,num): ''' :param num: int :return: int ''' tmp = num ans = 1 while(num): ans = ans*2 num = num >>1 return (ans-1) ^ tmp
[Leetcode 693] :判断一个数的二进制表示是否01是交错出现,Easy
思路:如果一个数满足要求,那么 num = 101 ^ 1010 = 1111 最后判断 num & (num+1) 是否为0即可[Leetcode 762]
class Solution(object): def __init__(self): MAXN = 1000 self.prime = [1]*(MAXN+1) self.prime[0]=self.prime[1]=0 for i in range(2,MAXN+1): if self.prime[i]==1: for y in range(i*i,MAXN+1,i): self.prime[y]=0 def countPrimeSetBits(self, L, R): """ :type L: :type R: :rtype: """ ans = 0 for x in range(L, R + 1): ans += self.prime[bin(x).count('1')] return ans
class Solution(object): def rangeBitwiseAnd(self, m, n): """ :type m: int :type n: int :rtype: int """ count=0 while(m!=n): m=m>>1 n=n>>1 count=count+1 return m<
class Solution(object): def validUtf8(self, data): count =0 #print '{:b}'.format(data[0]) for d in data: if count==0: if d>>3 == 0b11110: count = 3 elif d>>4 == 0b1110: count =2 elif d>>5 == 0b110: count =1 elif d <128: pass else: return False else: if (d>>6)!=0b10: return False count = count -1 return count == 0
class Solution(object): def integerReplacement(self,num): ''' :param num: :return: ''' cnt = 0 while(num!=1): if num & 1 == 0: num = num>>1 elif (num==3) or (num & 3 !=3): num -=1 else: num +=1 cnt+=1 return cnt
class Solution(object): def findMaximumXOR(self, nums): """ :type nums: List[int] :rtype: int """ ans = mask = 0 for x in range(31, -1, -1): mask += 1 << x prefixSet = set([n & mask for n in nums]) tmp = ans | 1 << x for prefix in prefixSet: if tmp ^ prefix in prefixSet: ans = tmp break return ans
Github答案链接(Python)
转载地址:http://afqmi.baihongyu.com/