关于旅游的网站建设目的,做设计有必要买素材网站会员,怎样加强公司网站建设,深圳网站营销推广公司目录
1. 只出现一次的数字 Single Number
2. 只出现一次的数字 II Single Number II
3. 只出现一次的数字 III Single Number III
#x1f31f; 每日一练刷题专栏 #x1f31f;
Golang每日一练 专栏
Python每日一练 专栏
C/C每日一练 专栏
Java每日一练 专栏 leetcod…
目录
1. 只出现一次的数字 Single Number
2. 只出现一次的数字 II Single Number II
3. 只出现一次的数字 III Single Number III 每日一练刷题专栏
Golang每日一练 专栏
Python每日一练 专栏
C/C每日一练 专栏
Java每日一练 专栏 leetcode题号 136, 137, 260
1. 只出现一次的数字 Single Number
给定一个非空整数数组除了某个元素只出现一次以外其余每个元素均出现两次。找出那个只出现了一次的元素。
说明
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗
示例 1:
输入: [2,2,1]
输出: 1示例 2:
输入: [4,1,2,1,2]
输出: 4
代码1 用哈希表计数
def singleNumber(nums):hash_map {}for num in nums:if num in hash_map:hash_map[num] 1else:hash_map[num] 1for num, count in hash_map.items():if count 1:return numreturn 0if __name__ __main__:nums [2, 2, 1]print(singleNumber(nums))nums [4, 1, 2, 1, 2]print(singleNumber(nums))代码2 异或运算
def singleNumber(nums):res 0for num in nums:res ^ numreturn resif __name__ __main__:nums [2, 2, 1]print(singleNumber(nums))nums [4, 1, 2, 1, 2]print(singleNumber(nums))代码3 算术运算
def singleNumber(nums):hash_map {}sum1, sum2 0, 0for num in nums:if num in hash_map:hash_map[num] 1else:hash_map[num] 1sum1 numfor num, count in hash_map.items():sum2 2 * numreturn sum2 - sum1if __name__ __main__:nums [2, 2, 1]print(singleNumber(nums))nums [4, 1, 2, 1, 2]print(singleNumber(nums))输出
1 4 2. 只出现一次的数字 II Single Number II
给你一个整数数组 nums 除某个元素仅出现 一次 外其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
示例 1
输入nums [2,2,3,2]
输出3示例 2
输入nums [0,1,0,1,0,1,99]
输出99提示
1 nums.length 3 * 10^4-2^31 nums[i] 2^31 - 1nums 中除某个元素仅出现 一次 外其余每个元素都恰出现 三次
进阶你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗
代码1 用哈希表计数
def singleNumber(nums):hash_map {}for num in nums:if num in hash_map:hash_map[num] 1else:hash_map[num] 1for num, count in hash_map.items():if count 1:return numreturn 0if __name__ __main__:nums [2, 2, 3, 2]print(singleNumber(nums))nums [0, 1, 0, 1, 0, 1, 99]print(singleNumber(nums))代码2 位运算
def singleNumber(nums):res 0for i in range(64):sum 0for num in nums:sum (num i) 1if sum % 3 ! 0:res | 1 ireturn resif __name__ __main__:nums [2, 2, 3, 2]print(singleNumber(nums))nums [0, 1, 0, 1, 0, 1, 99]print(singleNumber(nums))代码3 算术运算
def singleNumber(nums):nums_set set(nums)sum1 sum(nums)sum2 3 * sum(nums_set)return (sum2 - sum1) // 2if __name__ __main__:nums [2, 2, 3, 2]print(singleNumber(nums))nums [0, 1, 0, 1, 0, 1, 99]print(singleNumber(nums))输出
3 99 3. 只出现一次的数字 III Single Number III
给定一个整数数组 nums其中恰好有两个元素只出现一次其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。
进阶你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现
示例 1
输入nums [1,2,1,3,2,5]
输出[3,5]
解释[5, 3] 也是有效的答案。示例 2
输入nums [-1,0]
输出[-1,0]示例 3
输入nums [0,1]
输出[1,0]提示
2 nums.length 3 * 10^4-2^31 nums[i] 2^31 - 1除两个只出现一次的整数外nums 中的其他数字都出现两次
代码1 用哈希表计数
def singleNumber(nums):m, res {}, []for num in nums:m[num] m.get(num, 0) 1for num, count in m.items():if count 1:res.append(num)return resif __name__ __main__:nums [1, 2, 1, 3, 2, 5]print(singleNumber(nums))nums [-1, 0]print(singleNumber(nums))nums [0, 1]print(singleNumber(nums))代码2 位运算分组异或
def singleNumber(nums):xor 0for num in nums:xor ^ nummask 1while (xor mask) 0:mask 1a, b 0, 0for num in nums:if num mask ! 0:a ^ numelse:b ^ numreturn [a, b]if __name__ __main__:nums [1, 2, 1, 3, 2, 5]print(singleNumber(nums))nums [-1, 0]print(singleNumber(nums))nums [0, 1]print(singleNumber(nums))输出
[3 5] [-1 0] [1 0] 每日一练刷题专栏
✨ 持续努力奋斗做强刷题搬运工 点赞你的认可是我坚持的动力 收藏你的青睐是我努力的方向
✎ 评论你的意见是我进步的财富
☸ 主页https://hannyang.blog.csdn.net/ Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏