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

【C++系列】STL容器——vector类的例题应用(12)

前言

大家好吖,欢迎来到 YY 滴C++系列 ,热烈欢迎!本章主要内容面向接触过C++的老铁,下面是收纳的一些例题与解析~
主要内容含:
在这里插入图片描述

目录

    • 【例1] 只出现一次的数字i(范围for与模等(^=))
    • 【例2] 杨辉三角OJ(resize & vector类型的vector)
    • 【例3] 电话号码的数字组合(多路递归)

【例1] 只出现一次的数字i(范围for与模等(^=))

  • 给出一段数字(例:223344566)(数字出现均两次,只有一个数字只出现一次),并保存在vector中,找到这个出现一次的数字
  • 核心思路:【^=】相同的数模等后为1,最后结果只剩下这个只出现一次的数字
class Solution 
{
public:int singleNumber(vector<int>& nums){int value = 0;for(auto e : v){value ^= e; }return value;}
};

【例2] 杨辉三角OJ(resize & vector类型的vector)

  • 设计思路图示:
    1. 初始化每一行所有元素都为“1”
    1. 根据杨辉三角特性调整中间元素在这里插入图片描述
      在这里插入图片描述
// 涉及resize / operator[]
// 核心思想:找出杨辉三角的规律,发现每一行头尾都是1,中间第[j]个数等于上一行[j-1]+[j]
class Solution 
{public:vector<vector<int>> generate(int numRows)//传入的参数表示要求杨辉三角的行数{vector<vector<int>> vv(numRows);//初始化每一行所有元素都为“1”for(int i = 0; i < numRows; ++i){vv[i].resize(i+1, 1);}for(int i = 2; i < numRows; ++i)//根据杨辉三角特性调整中间元素{for(int j = 1; j < i; ++j){vv[i][j] = vv[i-1][j] + vv[i-1][j-1];}}return vv;}
};

【例3] 电话号码的数字组合(多路递归)

  • 题目要求输入所示:在这里插入图片描述
  • 解题思路:
  • 首先根据题目要求,我们明白要设置一个string,存储【abc】【def】等等字符串
  • 当我们输入"258时",根据题意,我们要做到如图所示【abc】【jkl】【tuv】三者的全排列
  • 我们发现其中可以用 多路递归 的方式来访问
  • 1.图中 aj先分别访问了t u v,得到ajt,aju,ajv
  • 2.随后放回,a访问k,再同(1)步骤,分别访问t u v,得到 akt,aku,akv ,同理…
    在这里插入图片描述
  • 代码细节:
    1. 我们一开始要设置【字串:digits】【层次:level】【存储 结合后返回的一系列串:combineStr】【给定vector:v】
    1. 我们发现,每一层都要涉及到 多路递归 ,于是我们要根据 层数 进行 for循环 for循环
    1. 我们发现,递归后得到的字串的 元素个数 层数 是相同的
    1. 注意点: 要将字符类转换成整型(-“0”),以便于访问对应“电话按键”strA中的字符串
	string strA[10] = { "","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz" };// 输入的数字组合    当前层次      结合后的新字符串      存储所有的全排列组合void Combine(string digits, int level, string combineStr, vector<string&> v){if (level == digits.size()) //递归后得到的字串的元素个数与层数是相同的{v.push_back(combineStr);//当到最后一层的时候,将新字符串尾插进vector中return;}int num = digits[level] - '0';//将字符类转换成整型string str = strA[num];//访问对应“电话按键”strA中的字符串for (size_t i = 0; i < str.size(); ++i) //每一层都要涉及到多路递归,于是我们要根据层数进行for循环{Combine(digits, level + 1, combineStr + str[i], v);}
}
http://www.lryc.cn/news/207503.html

相关文章:

  • 常用应用安装教程---在centos7系统上安装JDK8
  • 阿里云/腾讯云国际站代理:国际腾讯云的优势
  • 【软件教程】如何用C++检查TCP或UDP端口是否被占用
  • Flutter报错RenderBox was not laid out: RenderRepaintBoundary的解决方法
  • 0基础学习PyFlink——用户自定义函数之UDAF
  • MVC架构_Qt自己的MV架构
  • CentOS - 安装 Elasticsearch
  • IDEA 断点高阶
  • Qt中的单例模式
  • ROS自学笔记十五:URDF工具
  • Pytorch代码入门学习之分类任务(三):定义损失函数与优化器
  • 【Linux】安装VMWare虚拟机(安装配置)和配置Windows Server 2012 R2(安装配置连接vm虚拟机)以及环境配置
  • Python入口顶部人体检测统计进出人数
  • 移动端自动化-Appium元素定位
  • menuconfig 图形化配置原理说明三
  • Ansible简介
  • Tomcat+nginx负载均衡和动静分离
  • 全景环视AVM标定
  • 【JavaScript】leetcode链表相关题解
  • 洞察运营机会的数据分析利器
  • 使用Python实现文字的声音播放
  • gulp自动化构建
  • java时间解析生成定时Cron表达式工具类
  • JavaEE 网络原理——TCP的工作机制(末篇 其余TCP特点)
  • 【软件测试】了解JUnit单元测试框架常用注解
  • 【广州华锐互动】三维全景3D消防科普展馆
  • 某大型车企:加强汽车应用安全防护,开创智能网联汽车新篇章
  • LLVM学习笔记(50)
  • rpc入门笔记0x01
  • web - Tomcat服务器