Leetcode977(代码随想录:有序数组的平方)
C++代码:
vector对象: vector<int> nums;
1. 求vector数组长度:nums.size();
2. 在数组尾部插入元素elem:nums.push_back(elem);
3. 删除数组尾部最后一个元素:nums.pop_back();
4. 删除位置pos的元素:nums.erase(const pos);
5. 删除位置begin到end之间的元素:nums.erase(const begin, const end);
6. 创建元素值为0,元素个数为nums.size()的vector数组:vector<int> result(nums.size(), 0);
7. 数组第一个元素:nums.begin();
8. 数组最后一个元素:nums.end();
9. 对数组升序排序:sort(nums.begin(), nums.end());
10. 对数组降序排序:sort(nums.begin(), nums.end(), greater<int>());
双指针法:
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
vector<int> result(nums.size(), 0);
int k = nums.size() - 1;
int i = 0;
int j = nums.size() - 1;
while(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;
}
};
暴力法:
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
for(int i=0; i < nums.size(); i++)
{
nums[i] *= nums[i];
}
sort(nums.begin(), nums.end());
return nums;
}
};
Python代码:
1. python求数组nums长度:
len(nums)
2. python取整:
middle = (left + right) // 2
3. python移除数组nums中的元素val:
nums.remove(val)
4. (1)python升序排序,列表本身修改:
nums.sort()
(2)python升序排序,返回新列表:
sorted(nums)
5. (1)列表地址相同:result = nums
(2)创建列表副本:result = nums[:]
双指针法:
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
i = 0
k, j = len(nums) - 1, len(nums) - 1
result = nums[:]
while i <= j:
if nums[i] ** 2 < nums[j] ** 2:
result[k] = nums[j] ** 2
k -= 1
j -= 1
else:
result[k] = nums[i] ** 2
k -= 1
i += 1
return result
暴力法:
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
return sorted(x**2 for x in nums)