欢迎大家积极在评论区留言发表自己的看法,知无不言,言无不尽,养成每天刷题的习惯,也可以自己发布优质的解题报告,供社区一同鉴赏,吸引一波自己的核心粉丝。
今天是七月集训第三天:排序
912. 排序数组
88. 合并两个有序数组
1037. 有效的回旋镖
1232. 缀点成线
1、912. 排序数组:C++中调用sort()。
2、88. 合并两个有序数组:C++中调用sort()。
3、1037. 有效的回旋镖:利用叉乘的思想,也可以重写sort(),和排序挂钩。
1.叉乘定义
两个向量的叉乘,又叫向量积、外积、叉积,叉乘的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。
2.叉乘运算
对于向量a和向量b:
a和b的叉乘公式为:
4、1232. 缀点成线:同上。
// 912. 排序数组
class Solution {
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
for(int i = 0; i < n; ++i) {
nums1[m + i] = nums2[i];
}
sort(nums1.begin(), nums1.end());
}
};
// 88. 合并两个有序数组
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
for(int i = 0; i < n; ++i) {
nums1[m + i] = nums2[i];
}
sort(nums1.begin(), nums1.end());
}
};
// 1037. 有效的回旋镖
class Solution {
public:
bool isBoomerang(vector<vector<int>>& points) {
int ab[] = {points[1][0] - points[0][0], points[1][1] - points[0][1]};
int ac[] = {points[2][0] - points[0][0], points[2][1] - points[0][1]};
int cx = ab[0] * ac[1] - ab[1] * ac[0];
return cx != 0;
}
};
// 1232. 缀点成线
class Solution {
public:
bool checkStraightLine(vector<vector<int>>& coordinates) {
for(int i = 1; i < coordinates.size(); ++i) {
coordinates[i][0] -= coordinates[0][0];
coordinates[i][1] -= coordinates[0][1];
}
for(int i = 2; i < coordinates.size(); ++i) {
if(coordinates[i][0] * coordinates[i - 1][1] - coordinates[i - 1][0] * coordinates[i][1] != 0) {
return false;
}
}
return true;
}
};