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代码

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

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

相关推荐
froginwe111 分钟前
CSS3 多媒体查询实例
开发语言
naruto_lnq5 分钟前
C++中的工厂方法模式
开发语言·c++·算法
独自破碎E5 分钟前
LCR_019_验证回文串II
java·开发语言
一切尽在,你来7 分钟前
C++多线程教程-1.2.3 C++并发编程的平台无关性
开发语言·c++
坚持就完事了9 分钟前
Java中的一些关键字
java·开发语言
雨季66619 分钟前
Flutter 三端应用实战:OpenHarmony “专注时光盒”——在碎片洪流中守护心流的数字容器
开发语言·前端·安全·flutter·交互
新缸中之脑26 分钟前
Moltbook 帖子精选
开发语言·php
xyq202437 分钟前
jQuery Mobile 表单选择
开发语言
郝学胜-神的一滴41 分钟前
深入解析Linux网络编程之bind函数:从基础到实践的艺术
linux·服务器·网络·c++·websocket·程序人生
青岑CTF42 分钟前
攻防世界-Web_php_include-胎教版wp
开发语言·安全·web安全·网络安全·php