虽然又是一个简单题,不过这次用vector更熟练了,也能自己根据学到的知识判断错误了。
比如,vector中,insert操作,第一个为pos位置,习惯性的打了0作为启示位置。后来发现,应该放一个指针,所以改成了vector.begin()。
注意事项:
end()函数得到的是容器中最后一个元素的下一个位置
好了
题目:
605. 种花问题
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false。
示例 1:
输入:flowerbed = [1,0,0,0,1], n = 1
输出:true
code:
class Solution {
public:
bool canPlaceFlowers(vector<int>& flowerbed, int n) {
flowerbed.insert(flowerbed.begin(), 0); // insert(pos, val)
flowerbed.push_back(0);
int l=flowerbed.size(), cnt=0;
for(int i=1;i<l-1;i++){
if(flowerbed[i-1]==0&&flowerbed[i]==0&&flowerbed[i+1]==0){
cnt++;
flowerbed[i]=1;
}
}
return cnt>=n;
}
};
haole.
备注,insert的用法:
v.insert(v.begin(),8);//在最前面插入新元素,此时v为8 2 7 9 5
v.insert(v.begin()+3,1);//在迭代器中下标为3的元素前插入新元素,此时v为8 2 7 1 9 5
v.insert(v.end(),3);//在向量末尾追加新元素,此时v为8 2 7 1 9 5 3
v.insert(v.end(),3,0);//在尾部插入3个0,此时v为8 2 7 1 9 5 3 0 0 0
————————————————
版权声明:本文为CSDN博主「EricLee23」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43142797/article/details/99854743