Merge pull request #591 from X-shuffle/master

更新 0056.合并区间 go版本(优化空间复杂度,不开辟新数组)
This commit is contained in:
程序员Carl
2021-08-13 09:38:04 +08:00
committed by GitHub
3 changed files with 63 additions and 24 deletions

View File

@ -176,30 +176,27 @@ class Solution:
```
Go
```Go
```golang
func merge(intervals [][]int) [][]int {
sort.Slice(intervals, func(i, j int) bool {
return intervals[i][0]<intervals[j][0]
})
res:=[][]int{}
prev:=intervals[0]
for i:=1;i<len(intervals);i++{
cur :=intervals[i]
if prev[1]<cur[0]{
res=append(res,prev)
prev=cur
}else {
prev[1]=max(prev[1],cur[1])
}
}
res=append(res,prev)
return res
//先从小到大排序
sort.Slice(intervals,func(i,j int)bool{
return intervals[i][0]<intervals[j][0]
})
//再弄重复的
for i:=0;i<len(intervals)-1;i++{
if intervals[i][1]>=intervals[i+1][0]{
intervals[i][1]=max(intervals[i][1],intervals[i+1][1])//赋值最大值
intervals=append(intervals[:i+1],intervals[i+2:]...)
i--
}
}
return intervals
}
func max(a, b int) int {
if a > b { return a }
return b
func max(a,b int)int{
if a>b{
return a
}
return b
}
```

View File

@ -216,7 +216,30 @@ class Solution: # 贪心思路
```
Go
```golang
func maxProfit(prices []int, fee int) int {
var minBuy int = prices[0] //第一天买入
var res int
for i:=0;i<len(prices);i++{
//如果当前价格小于最低价,则在此处买入
if prices[i]<minBuy{
minBuy=prices[i]
}
//如果以当前价格卖出亏本,则不卖,继续找下一个可卖点
if prices[i]>=minBuy&&prices[i]-fee-minBuy<=0{
continue
}
//可以售卖了
if prices[i]>minBuy+fee{
//累加每天的收益
res+=prices[i]-minBuy-fee
//更新最小值如果还在收获利润的区间里表示并不是真正的卖出而计算利润每次都要减去手续费所以要让minBuy = prices[i] - fee;,这样在明天收获利润的时候,才不会多减一次手续费!)
minBuy=prices[i]-fee
}
}
return res
}
```
Javascript:
```Javascript
// 贪心思路

View File

@ -159,7 +159,26 @@ class Solution:
```
Go
```golang
func monotoneIncreasingDigits(N int) int {
s := strconv.Itoa(N)//将数字转为字符串,方便使用下标
ss := []byte(s)//将字符串转为byte数组方便更改。
n := len(ss)
if n <= 1 {
return N
}
for i:=n-1 ; i>0; i-- {
if ss[i-1] > ss[i] {//前一个大于后一位,前一位减1后面的全部置为9
ss[i-1] -= 1
for j := i ; j < n; j++ {//后面的全部置为9
ss[j] = '9'
}
}
}
res, _ := strconv.Atoi(string(ss))
return res
}
```
Javascript:
```Javascript
var monotoneIncreasingDigits = function(n) {