力扣——算法入门计划第十四天

今天是力扣——算法入门计划第十四天,

也是最后一天,感谢各位大佬的支持和鼓励

算法路上一起奋斗

力扣——算法入门计划第十四天_第1张图片

目录

题目

思路

代码 

 题目

集合

代码

哈希表

代码


题目

190. 颠倒二进制位

力扣——算法入门计划第十四天_第2张图片

思路

每次把 res 左移,把 n 的二进制末尾数字,拼接到结果 res 的末尾。然后把 n 右移

比如:

力扣——算法入门计划第十四天_第3张图片

代码 

class Solution:
    # @param n, an integer
    # @return an integer
    def reverseBits(self, n):
        res = 0
        for i in range(32):
            res = (res << 1) | (n & 1)
            n >>= 1
        return res

 res = (res << 1) | (n & 1)
            n >>= 1

n & 1 

 

res << 1  res每次左移一位

  n >>= 1 n每次右移动一位

力扣——算法入门计划第十四天_第4张图片

 题目

136. 只出现一次的数字

力扣——算法入门计划第十四天_第5张图片

集合

使用集合存储数字。遍历数组中的每个数字,如果集合中没有该数字,则将该数字加入集合,

如果集合中已经有该数字,则将该数字从集合中删除,最后剩下的数字就是只出现一次的数字

一加一减的策略

代码

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        one=[]
        for i in nums:
            if i not in one:
                one.append(i)
            else:
                one.remove(i)
        return one[0]

哈希表

使用哈希表存储每个数字和该数字出现的次数。

遍历数组即可得到每个数字出现的次数,最后得到只出现一次的数字

代码

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        harshtable=dict()
        for i in nums:
            if i in harshtable:
                harshtable[i]+=1
            else:
                harshtable[i]=1
        for i in harshtable.keys():
            if harshtable[i]==1:
                return i

你可能感兴趣的:(python——力扣算法计划,算法,leetcode,职场和发展,python)