【C++】vector相关OJ

文章目录

    • [1. 只出现一次的数字](#1. 只出现一次的数字)
    • [2. 杨辉三角](#2. 杨辉三角)
    • [3. 电话号码字母组合](#3. 电话号码字母组合)

ヾ(๑╹◡╹)ノ" 人总要为过去的懒惰而付出代价 ヾ(๑╹◡╹)ノ"


1. 只出现一次的数字

力扣链接

代码展示:

cpp 复制代码
class Solution {
public:
    int singleNumber(vector<int>& nums) 
    {
        int value = 0;
        for(auto e : nums)
        {
            value ^= e;
        }
        return value;
    }
};

思路:异或

2. 杨辉三角

力扣链接

代码展示:

cpp 复制代码
class Solution {
public:
    vector<vector<int>> generate(int numRows) 
    {
        vector<vector<int>> vv;
        vv.resize(numRows);//开空间,numRows个vector<int>对象
        //杨辉三角
        for (size_t i = 0; i < vv.size(); ++i)
        {
            //开空间
            vv[i].resize(i + 1, 0);//开空间
            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)
            {
                if (vv[i][j] == 0)
                {
                    vv[i][j] = vv[i - 1][j - 1] + vv[i - 1][j];
                }
            }
        }
        return vv;
    }
};

思路 :

(1)规律:头尾都是1,中间第j个数等于上一行j-1+j;

(2)通过两次operator,来访问每一个数据。本质上是先访问第i个vector< int >对象,然后再访问这个对象的第j个int类型的数据(动态二维数组);

注意:(1)vector< vector < int >> 类比二维数组,vector < int > 类比于int数组,vector< vector < int >> 类比于对象数组,对象全是vector< int >类型的

3. 电话号码字母组合

力扣链接

代码展示:

cpp 复制代码
class Solution {
    //数字对应英文字母的映射
    string _numToStr[10] = { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
public:
    //递归函数
    void _letterCombine(string digits, size_t di, string combineStr, vector<string>& retV)
    {
        //返回条件
        if(di == digits.size())
        {
            retV.push_back(combineStr);
            return;
        }
        //取到数字字符转换为数字,在取到对应的字符串
        int num = digits[di] - '0';//数字字符转换为数字
        string str = _numToStr[num];//取到对应的字符串
        for (auto ch : str)
        {
            _letterCombine(digits, di + 1, combineStr + ch, retV);
        }


    }
    vector<string> letterCombinations(string digits) 
    {
        vector<string> retV;
        if(digits.empty())
            return retV;
        size_t di = 0;
        string str;
        _letterCombine(digits, di, str, retV);
        return retV;
    }
};

思路 :(1)排列组合,多路递归。

(2)当di等于数字字符串的大小【digits.size()】时,此时的combineStr尾插到retV【类型是vector< string >】并递归返回。

注意:(1)指的是,2-9键所对应的字母 的组合【比如:2对应的就是"abc",3对应的就是"def",4对应的就是"ghi",7对应的就是"pqrs"等】。

(2)输出多少个数字,字符串的长度就是多少。

相关推荐
晗夜未央8 分钟前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript
熊猫钓鱼>_>11 分钟前
四种书签,一条时间线:一个读书 App 的记忆颗粒与它的边界案例【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙pc
Fuyo_111935 分钟前
C++ AVL树保姆级详解:从平衡因子到四大旋转机制
java·c++·算法
努力努力再努力wz1 小时前
【Lua 入门系列】Lua 函数深入理解:函数对象、多返回值、可变参数、闭包、递归与尾调用优化
开发语言·lua
飞浪纪元[FWC–FE]1 小时前
从零到一键绿:Qt 5.14.2 + VS2019 开发环境搭建、Kit 套件配置与构建错误修复完全手册
开发语言·qt
Wang's Blog2 小时前
Java 项目实战:交友项目 - 联系人列表
java·开发语言·交友
傲世仙尊2 小时前
继承-类设计层次复用切片转换与菱形继承的死结
c++
我命由我123452 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
架构师伯子明2 小时前
FFmpeg C++学习(一):编译和demo
开发语言·c++·学习
海域云SeaArea_2 小时前
Windows Server 2008 R2 从零安装 IIS7.5(二):php.ini 配置
开发语言·windows·php