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

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

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

那么开启正题

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

1.只出现一次的数字2

137. 只出现一次的数字 II

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 **三次 。**请你找出并返回那个只出现了一次的元素。

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

这题是上面题的升级版,同样的我们还是要在位上下功夫,但是按位异或肯定行不通了,我们得靠别的方法,比如计数,创建一个32大的数组,将数据遍历按位是否为1对数组进行++,最后数组内的数据都是3n和3n+1,这时让ret加上3n+1对应的位,就可以得到想要的答案了,当然这里的重复数字也可以是2,5,7...

cpp 复制代码
​
class Solution {
public:
    int singleNumber(vector<int>& nums)
    {
        int a[32] = { 0 };
        int i = 0;
        int ret = 0;
        for (i = 0; i < nums.size(); i++)
        {
            int j = 0;
            for (j = 0; j < 32; j++)
            {
                if (nums[i] & (1 << j))
                {
                    a[j]++;
                }
            }
        }
        for (i = 0; i < 32; i++)
        {
            if ((a[i] - 1) % 3 == 0)
            {
                ret += (1 << i);
            }
        }

        return ret;
    }
};

​

这是ac代码

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

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

相关推荐
fqbqrr2 小时前
2606C++,C++构的多态
开发语言·c++
biter down2 小时前
从 0 到 1 搭建 Python 接口自动化测试框架(博客系统实战)
开发语言·python
小欣加油2 小时前
leetcode56 合并区间
c++·算法·leetcode·职场和发展
Yolo_TvT3 小时前
C++:析构函数
c++
threelab4 小时前
Three.js 物理模拟着色器 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器
武器大师724 小时前
lv_binding_js 代码解读
开发语言·javascript·ecmascript
不知名的老吴4 小时前
线程的生命周期之线程“插队“
java·开发语言·python
Hello:CodeWorld5 小时前
C 风格变参 vs C++ 变参模板:核心区别与选型指南
c语言·c++·算法
kaikaile19955 小时前
数字全息图处理系统(C# 实现)
开发语言·c#