vector——OJ题
2023-12-16 11:33:33
文章目录
一、只出现一次的数字
1、题目讲解
2、思路讲解
3、代码实现
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ret=0;
for(auto& ch:nums)
{
ret^=ch;
}
return ret;
}
};
二、杨辉三角
1、题目讲解
2、思路讲解
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、题目讲解
2、思路讲解
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、题目讲解
2、思路讲解
部分递归展开图
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;
}
};
文章来源:https://blog.csdn.net/2301_78995005/article/details/135026878
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!