Ai
1 Star 2 Fork 5

LilithSangreal/LeetCode-Solutions

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
set-mismatch.py 1.42 KB
一键复制 编辑 原始数据 按行查看 历史
Allen Liu 提交于 2018-10-13 01:56 +08:00 . add complexity
# Time: O(n)
# Space: O(1)
class Solution(object):
def findErrorNums(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
x_xor_y = 0
for i in xrange(len(nums)):
x_xor_y ^= nums[i] ^ (i+1)
bit = x_xor_y & ~(x_xor_y-1)
result = [0] * 2
for i, num in enumerate(nums):
result[bool(num & bit)] ^= num
result[bool((i+1) & bit)] ^= i+1
if result[0] not in nums:
result[0], result[1] = result[1], result[0]
return result
# Time: O(n)
# Space: O(1)
class Solution2(object):
def findErrorNums(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
result = [0] * 2
for i in nums:
if nums[abs(i)-1] < 0:
result[0] = abs(i)
else:
nums[abs(i)-1] *= -1
for i in xrange(len(nums)):
if nums[i] > 0:
result[1] = i+1
else:
nums[i] *= -1
return result
# Time: O(n)
# Space: O(1)
class Solution3(object):
def findErrorNums(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
N = len(nums)
x_minus_y = sum(nums) - N*(N+1)//2
x_plus_y = (sum(x*x for x in nums) - N*(N+1)*(2*N+1)/6) // x_minus_y
return (x_plus_y+x_minus_y) // 2, (x_plus_y-x_minus_y) // 2
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/LilithSangreal/LeetCode-Solutions.git
git@gitee.com:LilithSangreal/LeetCode-Solutions.git
LilithSangreal
LeetCode-Solutions
LeetCode-Solutions
master

搜索帮助