前言
今天是第四天啦,加油快过一半了哈哈。
这两天被深搜广搜困扰,ε=(´ο`*)))唉。
1470. 重新排列数组
class Solution {
public:
vector<int> shuffle(vector<int>& nums, int n) {
//再开一个数组,依次把值放进去即可
vector<int> arr(2*n);
int index = 0;
for(int i = 0; i < n; i++)
{
arr[index++] = nums[i];
arr[index++] = nums[n+i];
}
return arr;
}
};
1929. 数组串联
直接在一个循环中赋值2次
class Solution {
public:
vector<int> getConcatenation(vector<int>& nums) {
int n = nums.size();
vector<int> vec(2*n);
for(int i = 0; i < n; i++)
{
vec[i] = nums[i];
vec[i+n] = nums[i];
}
return vec;
}
};
1920. 基于排列构建数组
class Solution {
public:
vector<int> buildArray(vector<int>& nums) {
vector<int> ans(nums.size());
for(int i = 0; i < nums.size(); i++)
{
ans[i] = nums[nums[i]];
}
return ans;
}
};
1480. 一维数组的动态和
一开始想新开一个数组去做,写两层循环,写着写着意识到,这不就是个斐波那契的变形吗?哈哈,只要nums的值实时修改就好
class Solution {
public:
vector<int> runningSum(vector<int>& nums) {
//类似斐波那契数列,nums[i] = nums[i] + nums[i-1]
//nums[0]始终为原来的值
for(int i = 1; i < nums.size(); i++)
{
nums[i] = nums[i] + nums[i-1];
}
return nums;
}
};
剑指 Offer 58 - II. 左旋转字符串
常规遍历
class Solution {
public:
string reverseLeftWords(string s, int n) {
int len = s.length();
n %= len;//避免n溢出
while(n--)
{
//把首字符保存起来,剩下的依次往前移
char tmp = s[0];
for(int i = 1; i < len; i++)
s[i-1] = s[i];
//把首字符赋值给最后一个字符
s[len-1] = tmp;
}
return s;
}
};
字符串首位相接,循环取模
申请空间时需要额外一个存放
‘\0’
char* reverseLeftWords(char* s, int k){
int i;
int n = strlen(s);
char *ret = (char *)malloc( (n + 1) * sizeof(char) );
for(i = 0; i < n; ++i) {
ret[i] = s[(i + k) % n];
}
ret[n] = '\0';
return ret;
}
局部翻转+整体翻转
class Solution {
public:
string reverseLeftWords(string s, int n) {
reverse(s.begin(), s.begin() + n);
reverse(s.begin() + n, s.end());
reverse(s.begin(), s.end());
return s;
}
};
1108. IP 地址无效化
class Solution {
public:
string defangIPaddr(string address) {
string s = "";
for(int i = 0; i < address.length(); i++)
{
if(address[i] == '.')
s += "[.]";
else
s += address[i];
}
return s;
}
};
剑指 Offer 05. 替换空格
class Solution {
public:
string replaceSpace(string s) {
string s2 = "";
for(int i = 0; i < s.length(); i++)
{
if(s[i] == ' ')
s2 += "%20";
else
s2 += s[i];
}
return s2;
}
};