【C++】vector习题
一、杨辉三角

class Solution {
public:vector<vector<int>> generate(int numRows) {}
};
这里给你一个vector<vector<int>>类型
也就是说vector中的各个数据,存的是各个不同的vector
思路:先给vector开空间,然后给vector中的vector开空间,并且初始化
最后根据数学关系找规律

class Solution {
public:vector<vector<int>> generate(int numRows) {vector<vector<int>> vv;vv.resize(numRows);for(int i = 0;i < numRows; i++){vv[i].resize(i+1,0); vv[i][i] = 1;vv[i][0] = 1;}for(int i = 2;i < vv.size();i++){for(int j = 1;j<vv[i].size()-1;j++){vv[i][j] = vv[i-1][j-1]+vv[i-1][j];}}return vv;}
};
二、删除有序数组中的重复项

法一:
就是简便的比较,如果相等则删除,又因为erase函数,删除后,后面的数据往前移动,所以比较的下标要不变
class Solution {
public:int removeDuplicates(vector<int>& nums) {int count = nums.size();std::vector<int>::iterator it = nums.begin();//1 1 1for (int i = 0; i < nums.size(); i++){//for (int j = i + 1; j < nums.size(); j++){if (nums[i] == nums[j]){count--;nums.erase(it + j);j--;}}}return count;}
};
法二:
双指针
思路:
如果有fast前后是相同的数字,slow指针不移动,直到fast指针找到不相同的数,再向前移动slow

class Solution {
public:int removeDuplicates(vector<int>& nums) {int n = nums.size();if (n == 0) {return 0;}int fast = 1, slow = 1;while (fast < n) {if (nums[fast] != nums[fast - 1]) {nums[slow] = nums[fast];++slow;}++fast;}return slow;}
};
三、只出现一次数据②
这里是参考比特老师所写的方法------> 这个方法简直妙蛙种子吃了妙脆角走进了米奇妙妙屋

想法思路真是太妙了
题目说:只有一个数字出现一次,其余数字均出现3次,假设数组为{3,5,3,3}
通过分析可知:
3的二进制:0 0 0 0 0 0 1 1
5的二进制:0 0 0 0 0 1 0 1
3的二进制:0 0 0 0 0 0 1 1
3的二进制:0 0 0 0 0 0 1 10 0 0 0 0 1 3 4 二进制1的总数
对于出现3次的数字,各位出现的次数都是3的倍数,因此对统计的为1的比特总数%30 0 0 0 0 1 0 1 = 5结果就是只出现一次的数字
class Solution {
public:int singleNumber(vector<int>& nums) {int ans = 0;for (int i = 0; i < 32; ++i) {// 统计该每个数字第i个比特位为1的总数int total = 0;for (int num : nums) {total += ((num >> i) & 1);//太妙了}// 如果total能够被3整除,说明只出现一次的数字在该位置上一定是0// 否则在该位置上一定是1if (total % 3) {ans |= (1 << i);//太妙了}}return ans;}
};
有操作符概念不了解的可以从下面这篇文章了解一下
http://t.csdnimg.cn/APANq
total += ((num >> i) & 1);
ans |= (1 << i);这里就好比给32位比特位全为0,哪个位置需要改就在哪里换个1,最后就是那一个数
特别是这两行代码写的真是太妙了
. - 力扣(LeetCode)
四、只出现一次数据③
参考leetcode的大佬所写
大佬们的方法简直就是--妙蛙种子吃了妙脆角走进了米奇妙妙屋
class Solution {
public:vector<int> singleNumber(vector<int> &nums) {unsigned int x = 0;for(int e : nums){x ^= e;}int x1 = x & (-x);int type1 = 0,type2 = 0;for (int e: nums) {if (e & x1) {type1 ^= e;}else {type2 ^= e;}}return {type1, type2};}
};
这里采用的是
异或做法---->前面也有提过
a^a = 0
a^a^b = b
下面我就开始讲一下这位灵茶山艾府大佬的代码与leetcode官方代码的结合版
首先为什么用unsigned int x = 0;直接用int不就好了吗?先带着这个问题往下看
我们把所有数据都异或一遍后,因为相同的数异或为0,只剩下两个单身狗设为x1,x2
也就是说第一个循环走完以后unsigned int x = x1^x2
我们得出x(也就是x1与x2的混合体),要混合体有什么用我们要的是单独的x1与x2,如何把这个混合体分开?
因为异或,性质是相同为0相异为1,也就是说x中二进制位中的一个1,也就是x1与x2不同的位数(要么x1这个位数为1,要么x2中这个位数为0,或者x1这个位数为0,x2这个位数为1):举个例子
6的二进制是 0110
10 1010
异或为 1100
我们知道这个了以后,只保留二进制最低位的1
x = 1100
~x = 0011
~x+1 = 0100 根据补码的定义就是-x 如果 数据是-1 -1 0 -2147483648对-2147483648取负,数据就溢出了,所以这里取unsigned int
& 按位与 (只有0就是0,两个同时为1才是1)
(x & -x) = 0100 我们得到二进制最低位的1
之后就是分组,分组的根据是什么?分组能把x1与x2分开且对于其他数没有任何影响,反正最后异或后都为0

最后就是找单身狗的问题
相关文章:
【C++】vector习题
一、杨辉三角 class Solution { public:vector<vector<int>> generate(int numRows) {} }; 这里给你一个vector<vector<int>>类型 也就是说vector中的各个数据,存的是各个不同的vector 思路:先给vector开空间,然后…...
Webpack Bundle Analysis:减少包体积的技巧
Webpack 是一个流行的 JavaScript 模块打包器,它能够将项目中各种类型的模块和资源打包成一个或多个 bundle。然而,随着项目的复杂性增加,bundle 的体积也会随之增大,这可能导致加载时间变长,影响用户体验。 Webpack …...
如何利用 ChatGPT 提高工作效率?
内容创作与总结: 写作辅助:可以帮助撰写文章、报告、邮件等各种文本,如为招商银行写宣传文案、写论文、写故事等。学习材料生成:能够生成学习材料,如摘要、抽认卡和测验,帮助学生复习和学习课程。评估和考核…...
使用 Redisson 、Redis实现分布式锁
Redisson 是基于 Redis 实现的一个 Java 框架,为开发者提供了更方便、更高级的 API 和功能。 Redisson 优点: 简单易用的 API:简化了 Redis 操作的代码编写,使开发者能够更专注于业务逻辑。 分布式特性支持:如分布式…...
Typro + PicGo 图床 + Docsify + GitHub Pages,玩转个人知识库搭建,写给小白的建站入门课
自动开了这个号以后,陆陆续续写了很多干货文章,一方面是可以帮助自己梳理思路,另一方面也方便日后查找相关内容。 但是,我想检索某个关键词是在之前哪篇文章写过的,就有点捉急了。CSDN 还好,可以检索到相关…...
多角度文字识别:应对复杂环境的智能解决方案
多角度文字识别(Multi-Angle Text Recognition)是指在不同视角、不同光照条件和不同背景下对文本进行识别的技术。这项技术在许多应用场景中都非常重要,例如自动驾驶、智能监控、文档数字化等。以下是关于多角度文字识别的一些关键点和摘要&a…...
笔记:简单介绍WPF中RenderTransform,LayoutTransform, VisualTransform区别
一、目的:简单介绍WPF中RenderTransform,LayoutTransform, VisualTransform区别 在 WPF 中,RenderTransform、LayoutTransform 和 VisualTransform 是用于对控件进行变换的属性,他们的主要区别是什么,如何选…...
【AI大模型】LangChain框架:示例选择器与输出解析器携手,编织NLP高效精准之网
文章目录 前言一、示例选择器1.介绍及应用2.自定义示例选择器案例:AI点评姓名 3.基于长度的示例选择器案例:对输入内容取反 4.基于最大边际相关性(MMR)的示例选择器案例:得到输入的反义词 5.基于n-gram重叠的示例选择器6.综合案例 二、输出解…...
苹果电脑玩的游戏有哪些 Mac电脑怎么玩Windows游戏 苹果电脑可以装模拟器玩游戏吗
苹果电脑虽然在游戏生态上可能不及Windows平台那么广泛,但其强大的硬件和macOS系统的优化,足以支持一系列高质量游戏的流畅运行。从策略游戏《文明VI》到动作冒险游戏《黑暗之魂III》,再到解谜游戏《传送门2》和角色扮演游戏《神界࿱…...
【mathtype】word中如何输入4×4的矩阵,甚至阶数更多
在写论文或者使用word操作的时候,我们可能会使用矩阵插入我们所写的word中,今天小编就分享一下如何在word中输入矩阵。首先,我们word中需要安装mathtype的插件。 ①打开word,鼠标点击mathtype,再点击内联 ② 出现以下…...
ByteArrayOutputStream
ByteArrayOutputStream 是 Java 中的一个类,它属于 java.io 包。这个类实现了一个字节输出流,其中数据被写入到一个字节数组中。这个缓冲区在数据写入时会自动增长,以适应需要存储的数据量。下面是对 ByteArrayOutputStream 的详细解释: 构造函数 ByteArrayOutputStream…...
使用CLIP模型进行零样本图像分类的分步指南
零样本学习允许AI系统对未明确训练过的类别进行图像分类,标志着计算机视觉和机器学习的重大进步。本文将介绍使用CLIP实现零样本图像分类的详细分步指南,从环境设置到最终的图像处理和分类。我们首先介绍零样本学习的概念及其在现代AI应用中的重要性。然后深入探讨CLIP模型的概…...
Llama 3.1用了1.6万个英伟达H100 GPU,耗费......
目录 Llama 3.1发布简介 Llama 3.1模型规模与训练 大模型企业发展面临的问题与困境 算力和能耗算力方面 数据和资金方面 技术和人才方面 Llama 3.1发布简介 当地时间 2024年 7月 23号,Meta 公司发布了迄今为止最强大的开源 AI 模型 Llama 3.1。该模型不仅规模…...
学习c语言第24天(练习)
编程题 第一题 最大公约数最小公倍数求和 //求最大公约数和最小公倍数之和 //暴力求解 //int main() //{ // int n 0; // int m 0; // while (scanf("%d %d", &n, &m)2) // { // int min n < m ? n : m; // int max n > m ? n : m; //…...
【微信小程序开发】——奶茶点餐小程序的制作(一)
👨💻个人主页:开发者-曼亿点 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 曼亿点 原创 👨💻 收录于专栏:…...
鱼眼相机去畸变和矫正
基于smart3D计算完空三进行导出opt文件 xx.opt文件,类似于xml文件 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <OpticalProperties version="1.0"><Id>0</Id><Name>201空三任务_1_…...
Llama 3.1论文中文对照翻译
The Llama 3 Herd of Models 模型群 Llama 3 Llama Team, Al Meta 1 {}^{1} 1 Llama 团队,Meta Al 1 {}^{1} 1 1 {}^{1} 1 A detailed contributor list can be found in the appendix of this paper. 1 {}^{1} 1 详细的贡献者名单可在本文附录中找到。 Mod…...
Vue js-cookie的使用存储token操作
在Vue项目中使用js-cookie库存储token可以按照下面的步骤进行操作: 首先,安装js-cookie库,可以使用npm安装,命令为: npm install js-cookie 然后,在需要存储token的组件中引入js-cookie库: imp…...
C到C++——C++基础
C是一种通用的、静态类型的、跨平台的编程语言。它是在1979年由Bjarne Stroustrup创建的,最初是作为C语言的扩展来支持面向对象编程。 C在保留C语言的特性的同时,添加了许多其他的功能,包括类、对象、继承、多态、模板等。这使得C成为了一种…...
trie算法
1、定义 高效的存储和查找字符串集合的数据结构 它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高 2、构建 我们可以使用数组来模拟实现Trie树。 我们设计一个二维数组 son[N] [26] 来…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
