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

一、思路

位运算

二、解题方法

三、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,适用于已知容器或数组元素类型的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值