C++初阶:vector相关练习

目录

  • 1. 只出现一次的数
  • 2. 杨辉三角
  • 3. 删除有序数组中的重复项
  • 4. 只出现一次的数II
  • 5. 只出现一次的数III
  • 6. 数组中出现次数超过一半的数
  • 7. 电话号码的字母组合(多叉树遍历)

1. 只出现一次的数

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    只出现一次的数
  3. 思路:位运算规律,a ^ a = 0,0 ^ a = a
class Solution 
{
public:int singleNumber(vector<int>& nums) {int num = 0;for(auto e : nums){num ^= e;}return num;}
};

2. 杨辉三角

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    杨辉三角
  3. 思路:将vector初始化为0,然后再将首尾处理为1,当num[i][j]为0时,nums[i][j] = nums[i - 1][j] + nums[i - 1][j - 1]
class Solution 
{
public:vector<vector<int>> generate(int numRows){vector<vector<int>> vv;vector<int> v1(1, 1);vv.push_back(v1);if (numRows == 1){return vv;}v1.push_back(1);vv.push_back(v1);if (numRows == 2){return vv;}vector<int> v2(v1);for (int i = 1; i < numRows - 1; i++){v2.push_back(1);for (int j = 1; j < v2.size() - 1; j++){v2[j] = vv[i][j - 1] + vv[i][j];}vv.push_back(v2);v1 = v2;}return vv;}
};

优化:

class Solution 
{
public:vector<vector<int>> generate(int numRows) {vector<vector<int>> ret;for(int i = 0; i < numRows; i++){ret.push_back(vector<int>(i + 1));ret[i].front() = ret[i].back() = 1;}for(int i = 0; i < numRows; i++){for(int j = 0; j < ret[i].size(); j++){if(ret[i][j] == 0){ret[i][j] = ret[i - 1][j] + ret[i - 1][j - 1];}}}return ret;}
};

3. 删除有序数组中的重复项

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    删除有序数组中的重复项
  3. 思路:
    <1> 挪移覆盖法O(n^2)
    <2> 双指针法(快排),前提条件:有序

在这里插入图片描述

class Solution 
{
public:int removeDuplicates(vector<int>& nums) {//双指针法int cur = 1;int pre = 0;while(cur < nums.size()){if(nums[pre] != nums[cur]){pre++;nums[pre] = nums[cur];}cur++;}return pre + 1;}
};

4. 只出现一次的数II

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    只出现一次的数II
  3. 思路:遍历计数法
class Solution 
{
public:int singleNumber(vector<int>& nums) {sort(nums.begin(), nums.end());int count = 1;int i = 0;for(i = 0; i + 1 < nums.size(); i++){if(nums[i] == nums[i + 1]){count++;}else{if(count != 3){break;}count = 1;}}return nums[i];}
};

5. 只出现一次的数III

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    只出现一次的数III
  3. 思路:排序 + 遍历计数
class Solution 
{
public:vector<int> singleNumber(vector<int>& nums) {vector<int> v;sort(nums.begin(), nums.end());int count = 1;for(int i = 1; i < nums.size(); i++){if(nums[i - 1] == nums[i]){count++;}else{if(count == 1){v.push_back(nums[i - 1]);}if(i == nums.size() - 1 && nums[i - 1] != nums[i]){v.push_back(nums[i]);}count = 1;}}return v;}
};

6. 数组中出现次数超过一半的数

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    数组中出现次数超过一半的数
  3. 思路:排序 + 计数遍历
class Solution 
{
public:int MoreThanHalfNum_Solution(vector<int>& numbers) {sort(numbers.begin(), numbers.end());int num = numbers[0];int count = 1;for(int i = 0; i + 1 < numbers.size(); i++){if(count > numbers.size() / 2){break;}if(numbers[i] != numbers[i + 1]){num = numbers[i + 1];count = 1;}else {count++;}}return num;}
};

7. 电话号码的字母组合(多叉树遍历)

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    电话号码的字母组合
  3. 思路:多叉树遍历,递归:递归子函数的参数(递归需要的参数),递归的结束条件
class Solution
{
public:string data[10] = { "","","abc", "def","ghi","jkl","mno","pqrs","tuv","wxyz" };//先层数+1,再插入//count第几层void combine(vector<string>& ret, string& digits, int count, const string& ans){//返回条件控制,什么时候返回if (count == digits.size()){ret.push_back(ans);return;}//多叉树遍历操作//pos第几个for (int pos = 0; pos < data[digits[count] - '0'].size(); pos++){//字符串拼接,不更改原本的值,多次使用combine(ret, digits, count + 1, ans + data[digits[count] - '0'][pos]);}}vector<string> letterCombinations(string digits){vector<string> ret;//特殊处理if (digits.size() == 0){return ret;}//层数,当层的哪个字符//第几个答案,组成结果多次使用不可更改原值string ans;int count = 0;combine(ret, digits, count, ans);return ret;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集合系列(六) -IdentityHashMap详解

一、摘要 在集合系列的第一章&#xff0c;咱们了解到&#xff0c;Map 的实现类有 HashMap、LinkedHashMap、TreeMap、IdentityHashMap、WeakHashMap、Hashtable、Properties等等。 应该有很多人不知道 IdentityHashMap 的存在&#xff0c;其中不乏工作很多年的 Java 开发者&am…

22.CP AUTOSAR PostBuild怎么用(2)

目录 1.引入 2. Post-Build Loadable集成要点 3.SWC上的变体管理 1.引入 在前一篇,我们分别讲了AUTSAR对于配置数据编译时间的设计,如下: Pre-CompileTime:在这个阶段配置参数参与编译后就无法再改变了,常见的如宏定义,该方式可以有效缩减代码量,节省Flash空间。生成…

python英文缩写单词扩写

词典 # 缩略词-扩展字典 contractions {"cant": "cannot","wont": "will not","Im": "I am","yours":"your"# 添加更多的缩略词及其扩展形式 }# 扩展缩略词的函数 def expand_contractions…

网文遇冷、短剧续命,阅文去年营收下滑8%

阅文能否靠短剧“续命”&#xff1f; 3月18日&#xff0c;阅文集团(下称“阅文”,00772.HK)公布了2023年财报&#xff0c;尽管去年净利润增加三成以上&#xff0c;但其营收持续下滑。 「不二研究」据其最新年报发现&#xff1a;2023年&#xff0c;阅文营收同比下滑8.0%。目前…

数组实现对数组中对象中的指定项的查找并输出该条记录

文章目录 需求分析 需求 已知返回的数据如下&#xff1a;&#xff0c;现需找到指定字段的那一项并输出 分析 写一个方法就能搞定&#xff0c;代码中定义了一个名为 findDeviceByName 的函数&#xff0c;它会遍历给定的数组&#xff0c;查找其中 deviceName 字段值等于目标…

C语言数据在内存中的存续:一篇文章让你秒懂基础!

JAMES别扣了-CSDN博客 &#x1f495;在校大学生一枚。对IT有着极其浓厚的兴趣 ✨系列专栏目前为C语言初阶、后续会更新c语言的学习方法以及c题目分享. &#x1f60d;希望我的文章对大家有着不一样的帮助&#xff0c;欢迎大家关注我&#xff0c;我也会回关&#xff0c;大家一起交…

关于javascript数字精度丢失的解决办法

分析原因 众所周知&#xff0c;在JavaScript中计算两个十进制数的和&#xff0c;有时候会出现令人惊讶的结果&#xff0c;主要原因是计算机将数据存储为二进制所引起的&#xff0c;所以这并不是javascript存在的缺陷&#xff0c;而在其他语言中也有类似的问题。 例如下面的例子…

aac可以直接改成mp3吗?快速转换的3个方法~

AAC&#xff08;Advanced Audio Coding&#xff09;文件格式的诞生源于对音频压缩技术的不断追求。由Fraunhofer IIS、杜比实验室、AT&T、索尼等联合开发&#xff0c;旨在提供更高质量的音频压缩效果。AAC文件格式因其出色的音质和高效的压缩算法&#xff0c;成为数字音频领…

使用SourceTree获取git代码

1、在浏览器打开git的地址&#xff0c;并且使用用户名和密码登录&#xff1b; 2、输入你的git账号密码&#xff1b; 3、打开SourceTree&#xff0c;地址是自动带过来的&#xff0c;点击第二个“浏览”选择你在D盘或其它盘自己创建的文件夹&#xff1b; 4、正在拉代码&#…

智慧商显安卓主板MT8788_联发科MTK平台多媒体广告一体机方案

MT8788高性能智能主板&#xff0c;支持Android 9.0操作系统&#xff0c;支持双屏异显功能;MT8788是基于12nm工艺制程四核A73四核A53架构的八核心CPU,主频高达2.0GHz,拥有超强的通用计算性能。 MT8788主板采用10层二阶超高密度PCB板,集成了4G、百兆以太网、2.4G/5G 双频WiFi、蓝…

javaSwing扫雷

一、介绍 1.1 背景 在1964年 有一个叫“方 块”的游戏&#xff0c;这是扫雷最原始的版本。后来&#xff0c;这个游戏被改成了另一种游戏&#xff0c;叫做“Rlogic”。在这个游戏中&#xff0c;玩家扮演了一名军队的军人&#xff0c;接受了一项艰难的任务&#xff1a;为指挥中…

记录一次服务器内存使用率过高达到90%告警问题排查。

目录 一、前言二、问题排查处理三、 结尾 &#x1f469;&#x1f3fd;‍&#x1f4bb;个人主页&#xff1a;阿木木AEcru &#x1f525; 系列专栏&#xff1a;Docker容器化部署系列 &#x1f4b9;每一次技术突破&#xff0c;都是对自我能力的挑战和超越。 一、前言 一大早就有一…

java:java.util.BitSet对象的Jackson序列化和反序列化实现

java.util.BitSet是个非常方便的比特位数据存储和操作类&#xff0c;一个 bit 具有2个值&#xff1a;0和1&#xff0c;正好可以用来表示 false 和 true&#xff0c;适用于判断“数据是否存在”的场景。 但是&#xff0c;这个从JDK1.0版本就存在的类&#xff0c;Jackson,Fastjso…

“我的海外代购,卖起了香灰手串”

【潮汐商业评论/文】 “这个琉璃手串&#xff0c;去年在雍和宫请的&#xff0c;招财的&#xff1b;这个朱砂挂件&#xff0c;当时直播说可以补八字缺火&#xff0c;果断下单的&#xff1b;这个博主讲星座很准&#xff1b;这篇帖子八字说得很详细&#xff1b;我前两天买了‘财神…

如何设置IDEA远程连接服务器开发环境并结合cpolar实现ssh远程开发

文章目录 1. 检查Linux SSH服务2. 本地连接测试3. Linux 安装Cpolar4. 创建远程连接公网地址5. 公网远程连接测试6. 固定连接公网地址7. 固定地址连接测试 本文主要介绍如何在IDEA中设置远程连接服务器开发环境&#xff0c;并结合Cpolar内网穿透工具实现无公网远程连接&#xf…

linux下用docker安装mysql及导入文件

目录 1. 非root用户设置docker权限2. user账号安装mysql2. root账号打开防火墙3. 启动mysql容器3.1 在指定工作目录下建立文件夹3.2 配置文件3.3 开启mysql容器 4. 进入容器4.1 通过容器进入mysql4.1 设置账号4.2 建立数据库4.3 导入文件 5. windows连接数据库参考文件 1. 非ro…

【说好的情怀呢】

友情提示&#xff1a; 抄本篇文章答案之前&#xff0c;请务必提前下载好 反诈APP。 多年情怀粉&#xff0c;今日粉转黑.... 问题&#xff1a; Q1: 将附件中 ip_china.csv.zip文件加载为 Hive 内部表&#xff0c;保持格式与 csv header一致&#xff0c;表需要开启压缩 Q2: 将…

k8s系列之十四安装Istio

Istio 是一个开源的服务网格&#xff08;Service Mesh&#xff09;&#xff0c;用于连接、管理和保护微服务。它提供了一组功能强大的工具&#xff0c;包括流量管理、安全性、监控和跟踪等&#xff0c;以帮助在微服务架构中更好地管理服务之间的通信。 一些主要的 Istio 功能包…

浅谈业务逻辑漏洞

1.业务逻辑漏洞&#xff1a;业务逻辑漏洞就是指攻击者利用业务/功能上的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。 逻辑漏洞的破坏方式并非是向程序添加破坏内容,而是利用逻辑处理不严密或代码问题或固有不足…

ubuntu内存不足,用Swap扩展增加虚拟内存

Linux增大Swap分区&#xff0c;可以增加虚拟内存&#xff0c;以解决电脑卡机&#xff0c;内存不足等问题 top可以查看cpu的使用情况 lscpu可以查看本机配置的cpu硬件情况 查看内存使用情况 free -h (下面显示"交换"或者Swap等字样说明系统已经启动了Swap&#xff…