前言
记录几个面试常见题型
一、知识点
指针,取值,解引用,c语言相关知识
二、题目
1、重新排列数组
1.1 分析
来个辅助数组交替赋值
1.2代码
int* shuffle(int* nums, int numsSize, int n, int* returnSize){
int i,k = 0;
int *ret = (int *)malloc( sizeof(int) * numsSize );
for(i = 0; i < n; ++i) {
ret[k] = nums[i];
k++;
ret[k] = nums[n + i];
k++;
}
*returnSize = numsSize;
return ret;
}
c++使用容器
class Solution {
public:
vector<int> shuffle(vector<int> nums, int n) {
vector<int> res;
for(int i = 0 ; i < n ; i++)
{
res.push_back(nums[i]);
res.push_back(nums[n+i]);
}
return res;
}
};
2、数组窜连
2.1题目分析
可能出现编译知识,每次nums.size()都会耗时
2.2代码
class Solution {
public:
vector<int> getConcatenation(vector<int>& nums) {
int n = nums.size();
for(int i = 0 ; i < n; i ++)
{
nums.push_back(nums[i]);
}
return nums;
}
};
3基于排列构建数组
3.1题目分析
想起来一些重排列相关的
3.2代码
class Solution {
public:
vector<int> buildArray(vector<int>& nums) {
int n = nums.size();
vector<int> res;
for(int i = 0 ; i < n ; i ++ )
{
res.push_back(nums[nums[i]]);
}
return res;
}
};
4、1480. 一维数组的动态和
4.1题目分析
还是对vector的运用
4.2代码
class Solution {
public:
vector<int> runningSum(vector<int>& nums) {
vector<int> sum;
int tem = 0;
for(int i = 0 ; i < nums.size(); i ++)
{
tem += nums[i];
sum.push_back(tem);
}
return sum;
}
};
5、剑指 Offer 58 - II. 左旋转字符串
5.1题目分析
substr(pos , n) 运用
5.2代码
class Solution {
public:
string reverseLeftWords(string str,int n){
if(str.size()==0) return str;
string s = str.substr(0,n );
string res = str.substr(n,str.size()) + s;
return res;
}
};
三、做题记录

344

被折叠的 条评论
为什么被折叠?



