update 0452.用最少数量的箭引爆气球: 优化 go 代码

This commit is contained in:
Yuhao Ju
2022-12-17 01:30:22 +08:00
committed by GitHub
parent c8b5ca8caa
commit 6f7f15b0df

View File

@ -56,7 +56,7 @@
如果真实的模拟射气球的过程应该射一个气球数组就remove一个元素这样最直观毕竟气球被射了 如果真实的模拟射气球的过程应该射一个气球数组就remove一个元素这样最直观毕竟气球被射了
但仔细思考一下就发现如果把气球排序之后从前到后遍历气球被射过的气球仅仅跳过就行了没有必要让气球数组remote气球只要记录一下箭的数量就可以了 但仔细思考一下就发现如果把气球排序之后从前到后遍历气球被射过的气球仅仅跳过就行了没有必要让气球数组remove气球只要记录一下箭的数量就可以了
以上为思考过程已经确定下来使用贪心了那么开始解题 以上为思考过程已经确定下来使用贪心了那么开始解题
@ -175,25 +175,25 @@ class Solution:
``` ```
### Go ### Go
```golang ```go
func findMinArrowShots(points [][]int) int { func findMinArrowShots(points [][]int) int {
var res int =1//弓箭数 var res int = 1 //弓箭数
//先按照第一位排序 //先按照第一位排序
sort.Slice(points,func (i,j int) bool{ sort.Slice(points, func (i,j int) bool {
return points[i][0]<points[j][0] return points[i][0] < points[j][0]
}) })
for i:=1;i<len(points);i++{ for i := 1; i < len(points); i++ {
if points[i-1][1]<points[i][0]{//如果前一位的右边界小于后一位的左边界,则一定不重合 if points[i-1][1] < points[i][0] { //如果前一位的右边界小于后一位的左边界,则一定不重合
res++ res++
}else{ } else {
points[i][1] = min(points[i - 1][1], points[i][1]); // 更新重叠气球最小右边界,覆盖该位置的值,留到下一步使用 points[i][1] = min(points[i - 1][1], points[i][1]); // 更新重叠气球最小右边界,覆盖该位置的值,留到下一步使用
} }
} }
return res return res
} }
func min(a,b int) int{ func min(a, b int) int {
if a>b{ if a > b {
return b return b
} }
return a return a