1480. 一维数组的动态和
前缀和
for(int i=1;i<=n;i++)
s[i]=s[i-1]+a[i];
for(int i=1;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
cout<<s[y]-s[x-1]<<endl;
}
但是,如果面试遇到这个问题,一个非常重要的事情是:问清楚面试官,是否可以修改传来的 nums 数组!
class Solution {
public:
vector<int> runningSum(vector<int>& nums) {
for(int i=1;i<nums.size();i++)
nums[i]+=nums[i-1];
return nums;
}
};
如果不可以
class Solution {
public:
vector<int> runningSum(vector<int>& nums) {
vector<int> sum(nums.size());
sum[0] = nums[0];
for(int i = 1; i < nums.size(); i ++)
sum[i] = sum[i - 1] + nums[i];
return sum;
}
};
剑指 Offer 58 - II. 左旋转字符串
class Solution {
public:
string reverseLeftWords(string s, int n) {
string s1,s2;
for(int i=0;i<n;i++)
s1+=s[i];
for(int i=n;i<s.size();i++)
s2+=s[i];
s2+=s1;
return s2;
}
};
面试题 02.03. 删除中间节点
覆盖法
class Solution {
public:
void deleteNode(ListNode* node) {
node->val=node->next->val;
ListNode* p=node->next;
node->next=node->next->next;
delete p;
}
};
1512. 好数对的数目
如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。
class Solution {
public:
int numIdenticalPairs(vector<int>& nums) {
int sum=0;
map<int,int>cnt;
for(int i=0;i<nums.size();i++)
{
sum+=cnt[nums[i]]++;//每次迭代前面的计数
}
return sum;
}
};
1431. 拥有最多糖果的孩子
result.push_back(candies[i]+extraCandies>=max);
对于bool类型的容器push_back里的判断语句成立就往里面压入True,否则就是False
class Solution {
public:
vector<bool> kidsWithCandies(vector<int>& candies, int extraCandies) {
vector<bool>result;
int max=0;
for(int i=0;i<candies.size();i++)
{
if(candies[i]>max)
max=candies[i];
}
for(int i=0;i<candies.size();i++)
{
result.push_back(candies[i]+extraCandies>=max);
}
return result;
}
};









网友评论