Leetcode704. 二分查找
题目链接:704.二分查找
C++:
左闭右开区间
class Solution {
public:
int search(vector<int>& nums, int target) {
int right = nums.size();
int left = 0;
while(left < right)
{
int middle = (left + right) / 2;
if(nums[middle] > target)
right = middle;
else if(nums[middle] < target)
left = middle + 1;
else
return middle;
}
return -1;
}
};
Python:
左闭右闭区间
class Solution:
def search(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums)-1
while left <= right:
middle = (left+right) // 2
if nums[middle] < target:
left = middle + 1
elif nums[middle] > target:
right = middle - 1
else:
return middle
return -1
Leetcode27. 移除元素
题目链接:27. 移除元素
C++:
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;
}
};
Python:
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
slow = 0
for fast in range(len(nums)):
if nums[fast] != val:
nums[slow] = nums[fast]
slow += 1
return slow
Leetcode977.有序数组的平方
题目链接:977.有序数组的平方
C++:
双指针解法
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
vector<int> result(nums.size(), 0);
int k = nums.size() - 1;
for(int i=0, j=nums.size()-1; i <= j;)
{
if(nums[i]*nums[i] > nums[j]*nums[j])
{
result[k--] = nums[i]*nums[i];
i++;
}
else
{
result[k--] = nums[j]*nums[j];
j--;
}
}
return result;
}
};
Python:
暴力求解
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
for i in range(len(nums)):
nums[i] *= nums[i]
nums.sort()
return nums