> 文档中心 > 九日集训day4【刷题】【九日集训】

九日集训day4【刷题】【九日集训】

在这里插入图片描述

前言

今天是第四天啦,加油快过一半了哈哈。
这两天被深搜广搜困扰,ε=(´ο`*)))唉。

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