当前位置: 首页 > news >正文

【OJ】C++ vector类OJ题

只出现过一次的数字(简单)

136. 只出现一次的数字 - 力扣(LeetCode)

这道题使用异或就非常简单了,所有数异或到一起,相同的数据双双消除,只剩下一个的数。

C语言异或运算详解-CSDN博客

class Solution {
public:int singleNumber(vector<int>& nums) {int val = 0;for(auto e : nums){val ^= e;}return val;}
};

变形题:(简单)

137. 只出现一次的数字 II - 力扣(LeetCode)

思路:统计出32个位中,每个位合计起来1出现的次数。

每个位1的个数要么是3n,要么是3n+1。而 3n+1 的位就是只出现一次的数的位

class Solution {
public:int singleNumber(vector<int>& nums) {// 统计32个位合计1的个数int bitArray[32] = {0};for(auto e : nums){for(size_t i = 0; i < 32; ++i){if(e & (1 << i)){bitArray[i]++;}}}int num = 0;// 找出3n+1的位,这些位就是只出现1次的数为1的位for(size_t i = 0; i<32; ++i){// 将3n+1的位或成1if(bitArray[i] % 3 == 1){num |= (1 << i);}}return num;}};

变形题:(中等)

​​​​​​260. 只出现一次的数字 III - 力扣(LeetCode)

class Solution {
public:vector<int> singleNumber(vector<int>& nums) {// 异或完成后,val就是只出现一次的两个数据异或的结果int val = 0;for(auto e : nums){val ^= e;}/* 解题思路 */// 此时的val就是两个我们要找的数据异或的结果,val中为1的位就是两个数不同的位// 即这个位有一个数为0有一个数为1// 此时我们将所有数据分为两组,一组是这个位为0的数,一组是这个位为1的数// 此时两个只出现过一次的数会被分到两个组中// 而其他的出现过两次的数也会被分过去,此时的问题就变成了问题1:// 一个整数数组中有1个只出现过1次的数,其他数都出现两次,找出这个只出现1次的数// 此时再按照问题1处理两组数据// 将一组中所有的数异或到一起,此时的异或结果就是这组数据中只出现过一次的数据。/* end */// 找到val中为1的位,并以此为依据将原数组分成两组数组size_t i = 0;for(; i <32 ; ++i){if(val & (1 << i))break;}// 将第i位为0和为1的分开成两组进行异或,得到的num1和num2就是两个只出现过一次的数int num1 = 0, num2 = 0;for(auto e : nums){if(e & (1 << i))num1 ^= e;elsenum2 ^= e;}vector<int> v;v.push_back(num1);v.push_back(num2);return v;}
};

杨辉三角(简单)

118. 杨辉三角 - 力扣(LeetCode)

class Solution {
public:vector<vector<int>> generate(int numRows) {vector<vector<int>> vv;vv.resize(numRows);// 构建初始的杨辉三角,每行开头和结尾赋值为1for(size_t i = 0;i<numRows;++i){vv[i].resize(i+1);vv[i][0] = 1;vv[i][vv[i].size() - 1] = 1;}// 填充杨辉三角for(size_t i = 0;i<vv.size();++i){for(size_t j = 0;j<vv[i].size();++j){// 不为1的需要被填充if(vv[i][j] != 1){vv[i][j] = vv[i-1][j-1] + vv[i-1][j];}}}return vv;}
};

http://www.xdnf.cn/news/1472329.html

相关文章:

  • 使用国内镜像源解决 Electron 安装卡在 postinstall 的问题
  • 【Python - 类库 - BeautifulSoup】(01)“BeautifulSoup“使用示例
  • ESP-idf注册双服务器配置
  • SemiSAM+:在基础模型时代重新思考半监督医学图像分割|文献速递-深度学习人工智能医疗图像
  • 笔记:现代操作系统:原理与实现(2)
  • CLIP学习
  • 【C++】Vector完全指南:动态数组高效使用
  • Transformer核心—自注意力机制
  • 大批项目经理被迫上前线,酸爽
  • 图片在vue2中引用的方式和优缺点
  • 【数字孪生核心技术】什么是倾斜摄影?
  • 遇到 Git 提示大文件无法上传确实让人头疼
  • SVT-AV1编码器中实现WPP依赖管理核心调度
  • 门控MLP(Qwen3MLP)与稀疏混合专家(Qwen3MoeSparseMoeBlock)模块解析
  • 【开题答辩全过程】以 基于JSP的宠物医院管理系统设计为例,包含答辩的问题和答案
  • LTV-1008-TP1-G 电子元器件 LiteOn光宝 发光二极管 核心解析
  • 字符串(2)
  • 一文读懂 RAG 与 KAG:原理、工程落地与开源实战
  • scrypt 密钥派生算法(RFC7914)技术解析及源码示例
  • 流固耦合|08-1外部数据导入
  • 基于Django+Vue3+YOLO的智能气象检测系统
  • 【Python - 类库 - requests】(02)使用“requests“发起GET请求的详细教程
  • Markdown Editor开发文档(附下载地址)
  • AmbiSSL
  • 深度学习模型在边缘计算设备上的部署
  • python库 Py2exe 的详细使用(将 Python 脚本变为Windows独立软件包)
  • 孙宇晨被质疑“砸盘”川普家族项目WLFI,惨遭拉黑锁仓?自称无辜展开“维权”!
  • Process Explorer 学习笔记(第三章3.3.1):DLL和句柄
  • C++中的Reactor和Proactor模型进行系统性解析
  • 2025经管领域十大高含金量证书推荐