540.Single Element in a Sorted Array

Given a sorted array consisting of only integers where every element appears twice except for one element which appears once. Find this single element that appears only once.

Input: [1,1,2,3,3,4,4,8,8]
Output: 2

兩種方法:

  1. 位運(yùn)算
    def singleNonDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        res = 0
        for i in nums:
            res ^= i
        return res
  1. 二分法,觀察哪邊是偶數(shù),切分開來不相等:
    def singleNonDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        start = 0
        end = len(nums)-1
        while(start<end):
            mid = (start+end)/2
            '''L=[3,3,7,7,|10,11,11];而[1,1,2,2,3,|4,4,8,8]'''
            if mid%2 == 1:
                mid -= 1
            if nums[mid] == nums[mid+1]:
                start = mid+2
            else:
                end = mid
            '''如果一半正好是奇數(shù),自減1這一半就是偶數(shù),如果相等,那么這邊偶數(shù)的那一邊是不會出現(xiàn)這個(gè)單數(shù),如果不相等,那就是在這一側(cè);如果一半是奇數(shù),如果不相等,那另一邊都是偶數(shù)則不會有這個(gè)單數(shù),一定在自己這個(gè)奇數(shù)個(gè)的這邊,如果相等,那就在另一邊,因?yàn)橐粋€(gè)數(shù)不可能跟兩邊都相等'''
        return nums[start]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容