文章目录
1470. 重新排列数组
用双指针把左右两边的数字按照答案顺序放好,然后一遍扫描放回到原数组中
class Solution {
public:
void merge(vector<int>&nums,int n) {
vector<int>res;
for(int i=0,j=n;i<n;i++,j++) {
res.push_back(nums[i]);
res.push_back(nums[j]);
}
for(int i=0;i<n*2;i++) {
nums[i]=res[i];
}
}
vector<int> shuffle(vector<int>& nums, int n) {
merge(nums,n);
return nums;
}
};
1929. 数组串联
insert函数
class Solution {
public:
vector<int> getConcatenation(vector<int>& nums) {
nums.insert(nums.end(),nums.begin(),nums.end());
return nums;
}
};
新建一个答案数组,只需要两次扫描,然后返回答案即可
class Solution {
public:
vector<int> getConcatenation(vector<int>& nums) {
vector<int>res;
for(int i=0;i<2;i++) {
for(int j=0;j<nums.size();j++) {
res.push_back(nums[j]);
}
}
return res;
}
};
1920. 基于排列构建数组
class Solution {
public:
vector<int> buildArray(vector<int>& nums) {
vector<int>res;
for(int i=0;i<nums.size();i++) {
res.push_back(nums[nums[i]]);
}
return res;
}
};
1480. 一维数组的动态和
class Solution {
public:
vector<int> runningSum(vector<int>& nums) {
int sum=0;
vector<int>res;
for(int i=0;i<nums.size();i++) {
sum+=nums[i];
res.push_back(sum);
}
return res;
}
};
剑指 Offer 58 - II. 左旋转字符串
直接分别把两段截取出来
class Solution {
public:
string reverseLeftWords(string s, int n) {
string a=s.substr(0,n);
string b=s.substr(n);
return b+a;
}
};
1108. IP 地址无效化
class Solution {
public:
string defangIPaddr(string address) {
string res;
for(int i=0;i<address.size();i++) {
if(address[i]=='.') res+="[.]";
else res+=address[i];
}
return res;
}
};
剑指 Offer 05. 替换空格
class Solution {
public:
string replaceSpace(string s) {
string ch;
for(int i=0;i<s.size();i++){
if(s[i]==' ') ch+="%20";
else ch+=s[i];
}
return ch;
}
};
1365. 有多少小于当前数字的数字
class Solution {
public:
vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
int n=nums.size();
vector<int>res=nums,ans;
unordered_map<int,int>mp;
sort(res.begin(),res.end());
for(int i=0;i<n;i++) {
if(mp.find(res[i])==mp.end()) mp[res[i]]=i;
}
for(int i=0;i<n;i++) {
ans.push_back(mp[nums[i]]);
}
return ans;
}
};
剑指 Offer 17. 打印从1到最大的n位数
class Solution {
public:
vector<int> printNumbers(int n) {
vector<int>res;
int m=pow(10,n)-1;
for(int i=1;i<=m;i++) {
res.push_back(i);
}
return res;
}
};
1389. 按既定顺序创建目标数组
class Solution {
public:
vector<int> createTargetArray(vector<int>& nums, vector<int>& index) {
vector<int>res;
for(int i=0;i<index.size();i++)
res.insert(res.begin()+index[i],nums[i]);
return res;
}
};