※leetcode每日一练-第136题-只出现一次的数字

文章介绍了如何使用位运算中的异或操作解决找到数组中只出现一次的数字的问题。代码示例展示了一个C++函数,该函数通过遍历数组并对所有元素执行异或操作来找到这个单数。同时,文章提到了位运算的基本知识,包括按位与、按位或、按位异或和按位取反等,并讨论了C++中`for(autoe:nums)`迭代器的使用及其与显式指定类型迭代器的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、思路

位运算

二、解题方法

三、code

class Solution {
public:
    int singleNumber(vector<int>& nums) {
       int ret=0;
       for (auto e:nums) ret ^=e;//循环nums中每个数,并做异或运算
       return ret;
    }
};

=========================================================================

四、学到的知识

1、

位运算
    位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。
位运算符有:
    &(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。
        其中,按位取反运算符是单目运算符,其余均为双目运算符。
    位运算符的优先级从高到低,依次为~、&、^、|,
        其中~的结合方向自右至左,且优先级高于算术运算符,其余运算符的结合方向都是自左至右,且优先级低于关系运算符。
 

2、 

①for (auto x : nums)
作用就是迭代容器中所有的元素,每一个元素的临时名字就是x;相当于:

for (int num=0; num<nums.length; num++)

②for (auto e:nums)和for(int num:nums)的区别

  • for (auto e:nums) 使用 auto 关键字进行类型推导。编译器会根据 nums 中元素的类型来自动推导出 e 的类型。这种方式更加灵活,适用于不同类型的容器或数组。
  • for (int num:nums) 显式指定了 num 的类型为 int。这种方式限定了循环变量的类型为 int,适用于已知容器或数组元素类型的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值