LeetCode-只出现一次的数字

在这里插入图片描述

这道题的思路如下:

首先对该数组进行排序,只有一个元素是出现过一次,其他均为两次。
所以,对其排序之后,即以下这个状态:
如果出现过两次,那么在数组的循环累加两个之后,那么一定会和它后面的那一个想等。如果出现了与后面一个值不相等的话,即为落单的一个值。

如果数组累加到倒数第三位和第二位,仍未找到落单,那么落单值为最后一位(数组长度一定是奇数个)

代码实现如下:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
       //找到不相等的一组直接返回落单的值
        sort(nums.begin(),nums.end());
        for(int i = 0 ; i < nums.size() - 1;i += 2)
        {
            if(nums[i] != nums[i + 1])
                return nums[i];
        }      
    //如果到最后一组也未找到,那么排序后的最后一位数字一定为落单的一位
    return nums[nums.size() - 1];
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Αиcíеиτеǎг

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值