2018.03.15 leetcode 打卡 #268. Missing Number
2018-03-15 23:55
471 查看
!!!leetcode第一次Accepted!!!
虽然感觉这句话暴露自己的智商,但是没办法,就是比较笨了~~~
虽然超级简单!几个简单的if语句搞定,还是阻挡不住我看到Accepted时的开心啊~
有第一次绿色 就有不断的绿灯 哈哈哈哈
明天补上后续学习大牛解法的博文
续更 leetcode 上的solution 版块
class Solution:
def missingNumber(self, nums):
nums_set = set(nums)
for i in range(len(nums) + 1):
if i not in nums_set:
return i
【[b]补充 】[/b]
异或运算法则
(1) a ^ b = b ^ a
(2) a ^ b ^ c = a ^ ( b^c) =(a^b)^c
(3)d= a ^ b ^ c ——>a= d^ b ^ c
(4) a^b^a = b
相同为0,相异为1,0异或任何数为任何数自身
a^a=0,0^n=n
index^value = missing number and n(value)
n ^(index ^value) = n ^ missing number ^n = missing number#位运算
class Solution:
def missingNumber(self, nums):
missing = len(nums) #用nums长度去异或
for i,v in enumerate(nums):
missing ^= i^v #不用管nums是否按大小排序 循环依次异或 因为a^b^c =c^b^a
return missingApproach $4 Gauss'Fomular
利用高斯公式求得 0-n 的总和,减去实际nums总和,既得缺失值~~
nice!这个方法好巧秒,自己还是定性思维~
Gauss'Formula =
#Gauss'Formula
class Solution:
def missingNumber(self, nums):
n = len(nums)
return n*(n+1)//2 - sum(nums) # //是向下取整,如果是 / 得到小数3.15的题 3.23才看完大牛解法...
拖延症患者飘走~~
虽然感觉这句话暴露自己的智商,但是没办法,就是比较笨了~~~
虽然超级简单!几个简单的if语句搞定,还是阻挡不住我看到Accepted时的开心啊~
有第一次绿色 就有不断的绿灯 哈哈哈哈
#268. Missing Number
题目 :Given an array containing n distinct numbers taken from0, 1, 2, ..., n, find the one that is missing from the array
class Solution: def missingNumber(self, nums): nums = sorted(nums) if len(nums) == 1 and nums[0] == 0 : return 1 elif len(nums) == 1 : return nums[0]-1 elif nums[0] != 0: return 0 else: for i in range(len(nums)-1): if nums[i+1] - nums[i] != 1: #print(nums) #print("##",i,nums[i+1] - nums[i] ) return (nums[i]+1) return (nums[len(nums)-1]+1)自己的代码太low了 等我看下大牛们是如何实现的
明天补上后续学习大牛解法的博文
续更 leetcode 上的solution 版块
Approch #2 HashSet
set()方法去除重复值后,假设nums长度为 n,则nums应该包含 0-n所有的值,不包括的则为missing#hashsetclass Solution:
def missingNumber(self, nums):
nums_set = set(nums)
for i in range(len(nums) + 1):
if i not in nums_set:
return i
Approch #3 Bit Manipulation
bit manipulation 位运算
运用XOR(异或),假设nums长为n,用 n XOR(value XOR index)【[b]补充 】[/b]
异或运算法则
(1) a ^ b = b ^ a
(2) a ^ b ^ c = a ^ ( b^c) =(a^b)^c
(3)d= a ^ b ^ c ——>a= d^ b ^ c
(4) a^b^a = b
相同为0,相异为1,0异或任何数为任何数自身
a^a=0,0^n=n
index^value = missing number and n(value)
n ^(index ^value) = n ^ missing number ^n = missing number#位运算
class Solution:
def missingNumber(self, nums):
missing = len(nums) #用nums长度去异或
for i,v in enumerate(nums):
missing ^= i^v #不用管nums是否按大小排序 循环依次异或 因为a^b^c =c^b^a
return missingApproach $4 Gauss'Fomular
利用高斯公式求得 0-n 的总和,减去实际nums总和,既得缺失值~~
nice!这个方法好巧秒,自己还是定性思维~
Gauss'Formula =
#Gauss'Formula
class Solution:
def missingNumber(self, nums):
n = len(nums)
return n*(n+1)//2 - sum(nums) # //是向下取整,如果是 / 得到小数3.15的题 3.23才看完大牛解法...
拖延症患者飘走~~
相关文章推荐
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 2018.03.15 leetcode 打卡 #268. Missing Number
- 【Leetcode】268. Missing Number
- leetcode 268. Missing Number
- leetcode_268. Missing Number 找0-n个数中缺失的数字
- [LeetCode]268. Missing Number(求数组中缺失的元素)
- Leetcode 268. Missing Number
- LeetCode 268. Missing Number (Easy)
- 【LeetCode】 268. Missing Number