vector——OJ题

在这里插入图片描述


北尘_:个人主页

个人专栏:《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》

☀️走在路上,不忘来时的初心

文章目录

  • 一、只出现一次的数字
    • 1、题目讲解
    • 2、思路讲解
    • 3、代码实现
  • 二、杨辉三角
    • 1、题目讲解
    • 2、思路讲解
    • 3、代码实现
  • 三、删除有序数组中的重复项
    • 1、题目讲解
    • 2、思路讲解
    • 3、代码实现
  • 四、电话号码的字母结合
    • 1、题目讲解
    • 2、思路讲解
    • 3、代码实现


一、只出现一次的数字

1、题目讲解

vector——OJ题_第1张图片

2、思路讲解

vector——OJ题_第2张图片

3、代码实现

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

二、杨辉三角

1、题目讲解

vector——OJ题_第3张图片

2、思路讲解

vector——OJ题_第4张图片

3、代码实现

class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int>> vv;
        vv.resize(numRows);
        for(int i=0;i<vv.size();i++)
        {
            vv[i].resize(i+1);
            vv[i][0]=vv[i][vv[i].size()-1]=1;
        }
         for(int i=0;i<vv.size();i++)
         {
             for(int 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、题目讲解

vector——OJ题_第5张图片

2、思路讲解

vector——OJ题_第6张图片

3、代码实现

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
       int n=0;
       for(int i=0;i<nums.size();i++)
       {
           if(nums[i]!=nums[n])
           {
               nums[++n]=nums[i];
           }
       }
       return n+1;

    }
};

四、电话号码的字母结合

1、题目讲解

vector——OJ题_第7张图片

2、思路讲解

部分递归展开图

vector——OJ题_第8张图片

3、代码实现

class Solution {
public:
    const char* arr[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    void Combina(const string& digits,int i,string str,vector<string>& ret)
    {
       if(i==digits.size())
       {
           ret.push_back(str);
           return;
       }
       int m=digits[i]-'0';
       string s1=arr[m];
       for(auto ch:s1)
       {
           Combina(digits,i+1,str+ch,ret);
       }
    }
    vector<string> letterCombinations(const string& digits) {
        vector<string> ret;
        if(digits.empty())
        return ret;

        string str;
        Combina(digits,0,str,ret);
        return ret;
    }
};

你可能感兴趣的:(经典算法试题,算法,开发语言,c++)