C++从零开始的打怪升级之路(day23)

这是关于一个普通双非本科大一学生的C++的学习记录贴

在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料

那么开启正题

今天分享的是关于vector的题目

1.只出现一次的数字3

260. 只出现一次的数字 III

给你一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。

你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题

这个题目的解决方案其实很多,可以遍历,枚举等,但是考虑时间复杂度和空间复杂度就有点难度了,后面学习哈希表可以再尝试一下,目前最好的解决方案就是位运算处理

首先遍历整个顺序表把所有元素异或得到的就是那两个数字的异或结果,再根据这个数判断两个数是从哪一位开始不一样,根据这个来进行“分组”,分组完成后就可以用我们前面的方法来解决了

 

class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) 
    {
        vector<int> ret;
        int val = 0;
        int n1 = 0,n2 = 0;
        int i=0;
        for(i=0;i<nums.size();i++)
        {
            val ^= nums[i];
        }

        int k = 0;
        while(1)
        {
            if(val & (1 << k))
            {
                break;
            }
            k++;
        }

        for(i=0;i<nums.size();i++)
        {
            if(nums[i] & (1 << k))
            {
                n1 ^= nums[i];
            }
            else
            {
                n2 ^= nums[i];
            }
        }

        ret.push_back(n1);
        ret.push_back(n2);

        return ret;
    }
};

这是ac代码

今天的博客就到这里了,后续内容明天分享,最近因为考试周原因不能更新太多内容,等考试周结束了再"快马加鞭"

新手第一次写博客,有不对的位置希望大佬们能够指出,也谢谢大家能看到这里,让我们一起学习进步吧!!

相关推荐

  1. C++开始升级(day23)

    2024-01-28 19:00:03       36 阅读
  2. C++开始升级(day21)

    2024-01-28 19:00:03       33 阅读
  3. C++开始升级(day24)

    2024-01-28 19:00:03       34 阅读
  4. C++开始升级(day28)

    2024-01-28 19:00:03       29 阅读
  5. C++开始升级(day12)

    2024-01-28 19:00:03       29 阅读
  6. C++开始升级(day13)

    2024-01-28 19:00:03       36 阅读
  7. C++开始升级(day16)

    2024-01-28 19:00:03       34 阅读
  8. C++开始升级(day14)

    2024-01-28 19:00:03       35 阅读
  9. C++开始升级(day18)

    2024-01-28 19:00:03       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-28 19:00:03       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-28 19:00:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-28 19:00:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-28 19:00:03       18 阅读

热门阅读

  1. python使用函数求余弦函数的近似值

    2024-01-28 19:00:03       35 阅读
  2. 并行计算工具 MPI 简单教程

    2024-01-28 19:00:03       32 阅读
  3. 2024年1月27日

    2024-01-28 19:00:03       33 阅读
  4. 初等数论,LeetCode 365. 水壶问题

    2024-01-28 19:00:03       43 阅读
  5. Vue——vue3拖拽库Sortablejs

    2024-01-28 19:00:03       35 阅读
  6. C: AES对称加密算法代码

    2024-01-28 19:00:03       38 阅读
  7. QT笔记 - QToolButton triggered(QAction *)不触发问题

    2024-01-28 19:00:03       30 阅读
  8. 初识C语言

    2024-01-28 19:00:03       37 阅读
  9. go 面试题分享

    2024-01-28 19:00:03       25 阅读
  10. 运维文本三剑客详辨

    2024-01-28 19:00:03       28 阅读
  11. Linux delay相关函数实现

    2024-01-28 19:00:03       24 阅读