704:二分查詢
題目連結:https://leetcode.cn/problems/binary-search/
這個還是比較簡單的
int search(vector
{
int low = 0;
int high = nums.size() - 1;
int mid = (low + high) / 2;
while(nums[mid] != target || low >= high)
{
if(nums[mid] < target)
{
low = mid + 1;
mid = (low + high) / 2;
}
else
{
high = mid - 1;
mid = (low + high) / 2;
}
}
return nums[mid]
}
27 移除元素
題目連結:https://leetcode.cn/problems/remove-element/
-
暴力解法
能自己寫,但是有些細節還不太對,想了一下為什麼需要i--,因為for迴圈裡面操作執行完了之後,i++,但是陣列又向前移了,所以需要i--
int removeElement(vector& 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];
}
size--;
i--;
}
}
return size;}
997 有序陣列的平方
雙指標法,看了講解之後嘗試自己寫
nt i = 0;
int j = A.size() - 1;
vector
int k = result.size() - 1;
for(;i <= j;)
{
int left = A[i] * A[i];
int right = A[j] * A[j];
if(left < right)
{
result[k--] = right;
j--;
}
else
{
result[k--] = left;
i++;
}
}
return result;
- 雙指標法
一開始嘗試自己寫,然後想法不對
int removeElement(vector& nums, int val)
{
int slow = 0;
int fast = 0;
for(; fast < nums.size(); fast++)
{
if(nums[fast] != val)
{
nums[slow++] = nums[fast];
}
}