[英雄星球七月集训LeetCode解题日报] 第3日 排序
日报
- 外边下着大雨,怪不得这么水。
题目
一、 912. 排序数组
链接: 912. 排序数组
1. 题目描述
2. 思路分析
- 好家伙!
3. 代码实现
class Solution:
def sortArray(self, nums: List[int]) -> List[int]:
return sorted(nums)
二、 88. 合并两个有序数组
链接: 88. 合并两个有序数组
1. 题目描述
2. 思路分析
按理说应该逆序归并。
3. 代码实现
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
"""
Do not return anything, modify nums1 in-place instead.
"""
a = sorted(nums1[:m]+nums2[:n])
nums1.clear()
for i in range(n+m):
nums1.append(a[i])
三、 1037. 有效的回旋镖
链接: 1037. 有效的回旋镖
1. 题目描述
2. 思路分析
斜率相等转乘法。
3. 代码实现
class Solution:
def isBoomerang(self, points: List[List[int]]) -> bool:
n = len(points)
if n != 3:
return False
p1,p2,p3 = (points[0][0],points[0][1]),(points[1][0],points[1][1]),(points[2][0],points[2][1])
if p1 == p2 or p1 == p3 or p2==p3:
return False
y1 = p1[1]-p2[1]
y2 = p1[1]-p3[1]
x1 = p1[0]-p2[0]
x2 = p1[0]-p3[0]
if x1*y2==x2*y1:
return False
return True
四、 1232. 缀点成线
链接: 1232. 缀点成线
1. 题目描述
2. 思路分析
- 斜率转乘法。
3. 代码实现
class Solution:
def checkStraightLine(self, coordinates: List[List[int]]) -> bool:
if len(coordinates) == 2:
return True
coordinates.sort(key=lambda x:x[0])
# y2/x2=y1/x1;x1y2=x2y1
a = coordinates[1][0] - coordinates[0][0]
b = coordinates[1][1] - coordinates[0][1]
for (x1,y1),(x2,y2) in pairwise(coordinates):
a1 = x2-x1
b1 = y2-y1
if a*b1 != a1*b:
return False
return True