136.只出现一次的数字+26.删除有序数组中的重复项

目录

一、136.只出现一次的数字

二、代码

三、26删除有序数组中的重复项

四、代码


一、136.只出现一次的数字

136. 只出现一次的数字 - 力扣(LeetCode)

136.只出现一次的数字+26.删除有序数组中的重复项_第1张图片

二、代码

  • 交换律:a ^ b ^ c <=> a ^ c ^ b

  • 任何数与0异或为任何数 0 ^ n => n

  • 相同的数异或为0: n ^ n => 0

2 ^ 3 ^ 2 ^ 4 ^ 4等价于 2 ^ 2 ^ 4 ^ 4 ^ 3 => 0 ^ 0 ^3 => 3

class Solution {
public:
    int singleNumber(vector& nums) {
        int a=0;
        for(auto data:nums)
        {
            a=a^data;
        }   
        return a;
    }
};

三、26删除有序数组中的重复项

26. 删除有序数组中的重复项 - 力扣(LeetCode)

136.只出现一次的数字+26.删除有序数组中的重复项_第2张图片

四、代码

class Solution {
public:
    int removeDuplicates(vector& nums) {
        int n=nums.size();
        if(n==1)
        return n;
        vector::iterator itbegin=nums.begin();
        vector::iterator it=itbegin+1;

        while(itbegin!=nums.end())
        {
            while(it!=nums.end())
            {
                if((*itbegin) == (*it))
                {
                    it = nums.erase(it);
                }
                else
                {
                    it++;
                }
            }
            itbegin++;
            it=itbegin+1;
        }

        n = nums.size();
        return n;
    }
};

你可能感兴趣的:(牛客/力扣,算法,leetcode,职场和发展)