Leetcode数组day1
704 二分查找
注意点,左闭右闭
class Solution {
public:int search(vector<int>& nums, int target) {//整数类型的动态数组的引用。int left=0;int right = nums.size()-1;while (left <= right){int middle = (right+left)/2;if (nums[middle]>target){ //在左区间right = middle-1; //right移动到middle左边一位}if (nums[middle]<target){//在右区间left = middle+1; //left移动到middle右边}if (nums[middle]==target){return middle;}}return -1;}
};
27 移除元素
class Solution {//双指针法
public:int removeElement(vector<int>& nums, int val) { int left = 0;int right = 0;while (right<nums.size()){if (nums[right]==val){ //快指针指向元素等于valright += 1;}else{nums[left] = nums[right];left += 1;right += 1;}}return left;}
};
977 有序数组的平方
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int right=nums.size()-1;vector<int> result(nums.size(),0);//创建一个名为 reuslt的大小为nums.size()的数组,值为0int i=0,j=nums.size()-1;while(i<=j){if (nums[i]*nums[i]<nums[j]*nums[j]){result[right]=nums[j]*nums[j];j -= 1;right -= 1;}else{result[right] = nums[i]*nums[i];i += 1;right -= 1;}}return result;}
};