[Leetcode] 137. Number II that only appears once

[Leetcode] 137. Number II that only appears once

topic

Insert picture description here

python3 language

Code 1:

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        list1=nums.copy()
        for i in nums:
            list1.remove(i)
            if i not in list1:
                return i
            list1.append(i)

Code 1, run as follows:
Insert picture description here
Code 2:

class Solution:
    def singleNumber(self, nums: List[int]) -> int:      
        return (3 * sum(set(nums)) - sum(nums)) // 2

Code 2, which runs as follows:
Insert picture description here

C++ language

class Solution {
    
    
public:
    int singleNumber(vector<int>& nums) {
    
    
        int ones = 0, twos = 0;
        for (int x: nums) {
    
    
            // 之前出现过两次的,这次再出现就是出现了三次
            int threes = twos & x;

            // 之前出现过两次,这次没出现,是出现了两次。
            // 之前出现过一次的,这次再出现,也是出现了两次。
            twos = (twos & ~x) | (ones & x);

            // 统计记录出现了奇数次的,并从其中清除出现三次的。
            // 这样ones里面始终只会记录出现了一次的。
            ones = ones ^ x;
            ones &= ~threes;
        }
        return ones;

    }
};

Run as follows:
Insert picture description here

Guess you like

Origin blog.csdn.net/jn10010537/article/details/114550571