Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1015a0c

Browse files
committed
add new files
1 parent3cad8d8 commit1015a0c

6 files changed

+127
-5
lines changed

‎122. Best Time to Buy and Sell Stock II.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,14 @@ import "math"
55
funcmaxProfit(prices []int)int {
66
cur,max:=0,0
77
fori:=1;i<len(prices);i++ {
8-
cur=int(math.Max(float64(cur),float64(cur+prices[i]-prices[i-1])))
9-
max=int(math.Max(float64(cur),float64(max)))
8+
cur=mymax(cur,cur+prices[i]-prices[i-1])
9+
max=mymax(cur,max)
1010
}
1111
returnmax
1212
}
13+
funcmymax(x,yint)int {
14+
ifx>y {
15+
returnx
16+
}
17+
returny
18+
}

‎125. Valid Palindrome.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
package main
22

33
import (
4-
"fmt"
54
"regexp"
65
"strings"
76
)
87

98
//TODO 速度不是很理想
10-
funcisPalindrome1(sstring)bool {
9+
funcisPalindrome(sstring)bool {
1110
pat:="[,:.@#--?\";!` ]"
1211
re,_:=regexp.Compile(pat)
1312

1413
s=re.ReplaceAllString(s,"")
1514
s=strings.ToLower(s)
16-
fmt.Println("s=",s)
1715
ifs=="" {
1816
returntrue
1917
}

‎134. Gas Station.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package main
2+
3+
/**
4+
如果一个数组的总和非负,那么一定可以找到一个起始位置,从他开始绕数组一圈,累加和一直都是非负的
5+
1. 假如从位置i开始,i+1,i+2...,一路开过来一路油箱都没有空。说明什么?说明从i到i+1,i+2,...肯定是正积累。
6+
2. 现在突然发现开往位置j时油箱空了。这说明什么?说明从位置i开始没法走完全程(废话)。那么,我们要从位置i+1开始重新尝试吗?不需要!为什么?因为前面已经知道,位置i肯定是正积累,那么,如果从位置i+1开始走更加没法走完全程了,因为没有位置i的正积累了。同理,也不用从i+2,i+3,...开始尝试。所以我们可以放心地从位置j+1开始尝试。
7+
TODO 然而并不是AC里面最快的
8+
*/
9+
funccanCompleteCircuit(gas []int,cost []int)int {
10+
start,remain,debt:=0,0,0
11+
fori:=0;i<len(gas);i++ {
12+
13+
remain+=gas[i]-cost[i]
14+
ifremain<0 {
15+
debt+=remain
16+
start=i+1
17+
remain=0
18+
}
19+
}
20+
ifremain+debt>=0 {
21+
returnstart
22+
}
23+
return-1
24+
}

‎137. Single Number II.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package main
2+
3+
/**
4+
这是一个简单的思路
5+
貌似可以用位运算搞定。。。
6+
*/
7+
funcsingleNumber(nums []int)int {
8+
k:=make(map[int]int)
9+
// count=0
10+
for_,kvs:=rangenums {
11+
if_,ok:=k[kvs];ok {
12+
k[kvs]+=1
13+
14+
}else {
15+
k[kvs]=1
16+
}
17+
}
18+
p:=0
19+
forl:=rangek {
20+
ifk[l]==1 {
21+
p=l
22+
}
23+
}
24+
returnp
25+
}

‎152. Maximum Product Subarray.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package main
2+
3+
/**
4+
考虑到负负得正的情况,需要同时记录最大值和最小值
5+
*/
6+
funcmaxProduct(nums []int)int {
7+
prevMax,prevMin,ret:=nums[0],nums[0],nums[0]
8+
fori:=1;i<len(nums);i++ {
9+
ifnums[i-1]==0 {
10+
prevMax,prevMin=nums[i],nums[i]
11+
}else {
12+
curMax:=max(nums[i],max(nums[i]*prevMax,nums[i]*prevMin))
13+
curMin:=min(nums[i],min(nums[i]*prevMax,nums[i]*prevMin))
14+
prevMax,prevMin=curMax,curMin
15+
}
16+
ret=max(prevMax,ret)
17+
}
18+
returnret
19+
}
20+
21+
funcmax(x,yint)int {
22+
ifx>y {
23+
returnx
24+
}
25+
returny
26+
}
27+
funcmin(x,yint)int {
28+
ifx>y {
29+
returny
30+
}
31+
returnx
32+
}

‎165. Compare Version Numbers.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package main
2+
3+
import (
4+
"strconv"
5+
"strings"
6+
)
7+
8+
/**
9+
首先切分字符串,然后循环比较每一段,注意处理连续0的情况
10+
*/
11+
12+
funccompareVersion(version1string,version2string)int {
13+
v1:=strings.Split(version1,".")
14+
v2:=strings.Split(version2,".")
15+
ret:=1
16+
i:=0
17+
fori=0;i<len(v1)&&i<len(v2);i++ {
18+
a,_:=strconv.Atoi(v1[i])
19+
b,_:=strconv.Atoi(v2[i])
20+
ifa>b {
21+
return1
22+
}elseifa<b {
23+
return-1
24+
}
25+
}
26+
iflen(v1)<len(v2) {
27+
ret=-1
28+
v1=v2
29+
}
30+
for ;i<len(v1);i++ {
31+
a,_:=strconv.Atoi(v1[i])
32+
ifa!=0 {
33+
returnret
34+
}
35+
}
36+
return0
37+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp