vector——OJ题

简介: vector——OJ题

一、只出现一次的数字


1、题目讲解

585fc6bd5aeb4a1f96ceea89684d2b28.png

2、思路讲解

7dd42ae1c7974109bef152e5528f8185.png

3、代码实现

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


二、杨辉三角


1、题目讲解

a4eae5e7573f4c1f910d960d9ceb903d.png

2、思路讲解

8921c03c7c754584b7bb80b085bd9143.png

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、题目讲解

b67042b7ff344c6181f5ebb827b963a2.png

2、思路讲解

6a96224a73f2416ebea850181eab3814.png

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、题目讲解

d2f96fae254846d8a48aa0ea10a831be.png

2、思路讲解

部分递归展开图

a59daa4939aa4159a796e45fa04859c1.png

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;
    }
};


目录
相关文章
|
7月前
|
存储 算法 编译器
【C++初阶】STL详解(三)vector的介绍与使用
【C++初阶】STL详解(三)vector的介绍与使用
64 0
|
存储
数组OJ题(总)
数组OJ题(总)
80 0
|
存储 算法
数组OJ题(2)
数组OJ题(2)
115 0
|
存储
数组OJ题(1)
数组OJ题(1)
58 0
|
存储
数组OJ题汇总(一)
数组OJ题汇总(一)
64 0
|
人工智能
poj 2299 Ultra-QuickSort 求逆序数 树状数组解法
所谓离散化,我们的了解就是对原数组排序,然后用所在位置的下标代替原数,这样我们就可以把数据范围缩小到1-500000,这个数组是开的下的。
47 0
|
存储 算法 Linux
【C++初阶】七、STL---vector介绍及使用
目录 一、vector的介绍 二、vector的使用 2.1 Construct 2.2 operator= 2.3 Iterators 2.4 Capacity 2.5 Element access 2.6 Modifiers
152 0
【C++初阶】七、STL---vector介绍及使用
|
C++
【C++】vector OJ练习(二)
【C++】vector OJ练习(二)
73 0
|
C语言 C++
【C++】vector OJ练习(一)
【C++】vector OJ练习
92 0
|
C++ 容器
Learining C++ No.12【vector】
Learining C++ No.12【vector】