代码随想录–数组部分
day1
代码随想录题目链接:代码随想录
一、力扣704–二分查找
比较经典的数组题目,注意一下边界基本上不会出错
class Solution {
public:
int search(vector<int>& nums, int target) {
int length;
length = nums.size();
int start = 0;
int end = length-1;
int index_now;
while (start <= end)
{
index_now = (end - start) / 2 + start;
if (nums[index_now] == target) return index_now;
if (nums[index_now] > target)
{
end = index_now-1;
}
else start = index_now+1;
}
return -1;
}
};
二、力扣27–移除元素
双指针法的初步应用,能够建立对双指针的理解
具体是设定两个指针,一快一慢,能够有效的降低重复搜索次数
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int fast = 0;
int slow = 0;
int length = nums.size();
while(fast < length)
{
if (nums[fast] != val)
{
nums[slow] = nums[fast];
fast ++;
slow ++;
}
else
{
fast ++;
//nums[slow] = nums[fast];
}
}
return slow;
}
};