数组基础理论
数组是存放在连续内存空间上的相同类型数据的集合。
可以通过下标轻松获取数据,但是增删元素的时候需要移动其他元素
Vector和array的区别 vector的底层实现是array,但是vector是容器不是数组
数组的元素不能删除,只能覆盖
小技巧:取中间 int mid =l+r>>1;//有时候怕溢出,写成 l+((r-l)>>1)
左闭右闭 l=0; r=nums.size()-1; while(l<=r)l=mid+1;r=mid-1;
左闭右开 l=0; r=nums.size(); while(r>l) l=mid+1; r=mid;
暴力法:
点击查看代码
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int size = nums.size();
for (int i = 0; i < size; i++) {
if (nums[i] == val) { // 发现需要移除的元素,就将数组集体向前移动一位
for (int j = i + 1; j < size; j++) {
nums[j - 1] = nums[j];
}
i--; // 因为下标i以后的数值都向前移动了一位,所以i也向前移动一位
size--; // 此时数组的大小-1
}
}
return size;
}
};
点击查看代码
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int slow=0;
for(int fast=0;fast<nums.size();fast++){
if(nums[fast]!=val){
nums[slow++]=nums[fast];
}
}
return slow;
}
};