代码随想录第九期第一天打卡记录
704.二分查找链接: link
以下部分为 c++相关的测试代码
。
注:
为了防止溢出vector设置mid的时候可以考虑
int mid = (left + right) / 2 ==> int mid = left + ((left + right) / 2);
#include<iostream>
#include<math.h>
#include<vector>
using namespace std;
class Solution {
public:
int search(std::vector<int>& nums, int target) { //vector<int>& nums 这行代码的含义是代表任意长度的向量
int left = 0, right = nums.size() - 1; // 初始化左侧锚点,获取vector的长度
while (left <= right)
{
int mid = left + ((right - left) / 2);
if (nums[mid] > target)
right = mid - 1;
else if (nums[mid] < target)
left = mid + 1;
else
return mid;
}
return -1;
}
};
int main704() // test
{
int tar = 5;
vector<int>vec{ 1,2,3,4,5,6,7,8,9 };
Solution s1;
int result = s1.search(vec, tar);
cout << result << endl;
return 0;
}
27.移除元素 链接: link
class Solution {
public:
int removeElement(std::vector<int>& nums, int val) {
int tarIdex=0;
for(int i = 0; i < nums.size(); i++) // 这里将不需要删除的元素在向量前端进行复写
{
if(nums[i] != val)
nums[tarIndex++] = nums[i];
}
int result = tarIndex; // 保留输出的锚点
if(tarIndex < nums.size()) // 将之后未被复写的元素修改为0
{
nums[tarIndex++] = 0;
}
return slowIndex;
}
};