程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Leetcode刷題Python】268. 丟失的數字

編輯:Python

1 題目

給定一個包含 [0, n] 中 n 個數的數組 nums ,找出 [0, n] 這個范圍內沒有出現在數組中的那個數。

示例 1:

輸入:nums = [3,0,1]
輸出:2
解釋:n = 3,因為有 3 個數字,所以所有的數字都在范圍 [0,3] 內。2 是丟失的數字,因為它沒有出現在 nums 中。

示例 2:

輸入:nums = [0,1]
輸出:2
解釋:n = 2,因為有 2 個數字,所以所有的數字都在范圍 [0,2] 內。2 是丟失的數字,因為它沒有出現在 nums 中。

2 解析

找缺失數、找出現一次數都是異或的經典應用。

我們可以先求得 [1,n] 的異或和 ans,然後用 ans 對各個nums[i] 進行異或。

這樣最終得到的異或和表達式中,只有缺失元素出現次數為 11 次,其余元素均出現兩次(x⊕x=0),即最終答案 ans 為缺失元素。

注意:列表中元素是從0到n

3 Python實現

class Solution:
def missingNumber(self, nums: List[int]) -> int:
ans = 0
# 元素是0到n,要取到n,Python中的range(n),是作閉右開的,包括n
for i in range(len(nums)+1):
ans ^= i
for j in nums:
ans ^=j
return ans

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved