Skip to content

Commit c05abee

Browse files
committed
update
1 parent c804a92 commit c05abee

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+4856
-1151
lines changed

000xxx/002.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
22
h := &ListNode{}
3-
l := h
4-
c := 0
3+
n, c := h, 0
54
for nil != l1 || nil != l2 {
65
d1, d2 := 0, 0
76
if nil != l1 {
@@ -17,8 +16,8 @@ func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
1716
} else {
1817
c = 0
1918
}
20-
l.Next = &ListNode{Val: d}
21-
l = l.Next
19+
n.Next = &ListNode{Val: d}
20+
n = n.Next
2221
if nil != l1 {
2322
l1 = l1.Next
2423
}
@@ -27,7 +26,7 @@ func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
2726
}
2827
}
2928
if 1 == c {
30-
l.Next = &ListNode{Val: 1}
29+
n.Next = &ListNode{Val: 1}
3130
}
3231
return h.Next
3332
}

000xxx/003.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
func lengthOfLongestSubstring(s string) int {
2-
m := map[rune]int{}
3-
j, out := 0, 0
4-
for i, r := range s {
5-
if k, ok := m[r]; ok && k >= j {
2+
m := map[byte]int{}
3+
j, o := 0, 0
4+
for i := 0; i < len(s); i++ {
5+
c := s[i]
6+
if k, ok := m[c]; ok && k >= j {
67
j = k + 1
78
}
8-
m[r] = i
9-
10-
l := i - j + 1
11-
if l > out {
12-
out = l
9+
m[c] = i
10+
if o1 := i - j + 1; o1 > o {
11+
o = o1
1312
}
1413
}
15-
return out
14+
return o
1615
}

000xxx/004.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
func find(nums1 []int, nums2 []int, k int) int {
1+
func cal(nums1 []int, nums2 []int, k int) int {
22
l1, l2 := len(nums1), len(nums2)
33
if 0 == l1 {
44
return nums2[k-1]
@@ -20,14 +20,14 @@ func find(nums1 []int, nums2 []int, k int) int {
2020
j = l2
2121
}
2222
if nums1[i-1] > nums2[j-1] {
23-
return find(nums1, nums2[j:], k-j)
23+
return cal(nums1, nums2[j:], k-j)
2424
} else {
25-
return find(nums1[i:], nums2, k-i)
25+
return cal(nums1[i:], nums2, k-i)
2626
}
2727
return 0
2828
}
2929

3030
func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {
3131
l1, l2 := len(nums1), len(nums2)
32-
return float64(find(nums1, nums2, (l1+l2+1)/2)+find(nums1, nums2, (l1+l2+2)/2)) / 2.0
32+
return float64(cal(nums1, nums2, (l1+l2+1)/2)+cal(nums1, nums2, (l1+l2+2)/2)) / 2.0
3333
}

000xxx/005.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
func longestPalindrome(s string) string {
2-
if 0 == len(s) {
2+
l := len(s)
3+
if 0 == l {
34
return ""
45
}
5-
t := []byte{'#'}
6-
for _, c := range []byte(s) {
7-
t = append(t, c)
8-
t = append(t, '#')
6+
t, i := make([]byte, l<<1+1), 1
7+
t[0] = '#'
8+
for j := 0; j < l; j++ {
9+
t[i], t[i+1], i = s[j], '#', i+2
910
}
11+
l = len(t)
1012

1113
m, mi := 0, 0
12-
for i := 0; i < len(t); i++ {
14+
for i := 0; i < l; i++ {
1315
k := i
14-
if len(t)-i-1 < k {
15-
k = len(t) - i - 1
16+
if k1 := l - i - 1; k1 < k {
17+
k = k1
1618
}
1719
j := 1
1820
for ; j <= k; j++ {
@@ -24,7 +26,6 @@ func longestPalindrome(s string) string {
2426
m, mi = j, i
2527
}
2628
}
27-
var i int
2829
if mi&1 == 1 {
2930
i = mi/2 + 1 - m/2
3031
} else {

000xxx/006.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@ func convert(s string, numRows int) string {
22
if numRows <= 1 {
33
return s
44
}
5-
out := []byte{}
6-
n := (numRows - 1) * 2
5+
o, n := []byte{}, (numRows-1)<<1
76
for i := 0; i < numRows; i++ {
87
for j := i; j < len(s); j += n {
9-
out = append(out, s[j])
8+
o = append(o, s[j])
109
k := j + n - i*2
1110
if i > 0 && i < numRows-1 && k < len(s) {
12-
out = append(out, s[k])
11+
o = append(o, s[k])
1312
}
1413
}
1514
}
16-
return string(out)
15+
return string(o)
1716
}

000xxx/007.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
func reverse(x int) int {
22
m := false
33
if x < 0 {
4-
m = true
5-
x = -x
4+
m, x = true, -x
65
}
7-
ds := []int{}
6+
ds := make([]int, 0, 8)
87
for x > 0 {
9-
ds = append(ds, x%10)
10-
x /= 10
8+
ds, x = append(ds, x%10), x/10
119
}
12-
o := 0
13-
b := 1
10+
o, b := 0, 1
1411
for i := len(ds) - 1; i >= 0; i-- {
1512
o += ds[i] * b
1613
b *= 10

000xxx/008.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,22 @@
11
func myAtoi(str string) int {
2-
ds := []byte{}
3-
m := false
4-
started := false
5-
for _, c := range []byte(str) {
2+
ds, m, started := []byte{}, false, false
3+
for i := 0; i < len(str); i++ {
4+
c := str[i]
65
if c == ' ' {
76
if started {
87
break
98
}
109
continue
1110
} else if c == '+' || c == '-' {
1211
if !started {
13-
started = true
14-
m = c == '-'
12+
started, m = true, c == '-'
1513
continue
1614
}
1715
break
1816
} else if c < '0' || c > '9' {
1917
break
2018
}
21-
started = true
22-
ds = append(ds, c)
19+
started, ds = true, append(ds, c)
2320
}
2421

2522
dst := []byte{}
@@ -28,8 +25,7 @@ func myAtoi(str string) int {
2825
if c == '0' && !started {
2926
continue
3027
}
31-
started = true
32-
dst = append(dst, c)
28+
started, dst = true, append(dst, c)
3329
}
3430
ds = dst
3531
if len(ds) > 11 {

000xxx/009.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ func isPalindrome(x int) bool {
22
if x < 0 {
33
return false
44
}
5-
ds := []int{}
5+
ds := make([]int, 0, 8)
66
for x > 0 {
77
ds = append(ds, x%10)
88
x /= 10
99
}
10-
for i := 0; i < (len(ds) >> 1); i++ {
11-
if ds[i] != ds[len(ds)-1-i] {
10+
l := len(ds)
11+
for i := 0; i < l>>1; i++ {
12+
if ds[i] != ds[l-1-i] {
1213
return false
1314
}
1415
}

000xxx/046.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@ func permute(nums []int) [][]int {
44
}
55
out := [][]int{}
66
for i, num := range nums {
7-
rest := []int{}
7+
rest, k := make([]int, len(nums)-1), 0
88
for j, num1 := range nums {
99
if i != j {
10-
rest = append(rest, num1)
10+
rest[k], k = num1, k+1
1111
}
1212
}
1313
for _, ar := range permute(rest) {
14-
ar1 := []int{num}
15-
ar1 = append(ar1, ar...)
14+
ar1 := make([]int, len(ar)+1)
15+
ar1[0] = num
16+
copy(ar1[1:], ar)
1617
out = append(out, ar1)
1718
}
1819
}

000xxx/068.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import "bytes"
2+
3+
func fullJustify(words []string, maxWidth int) []string {
4+
o, l, i := []string{}, len(words), 0
5+
for i < l {
6+
j, n := i, 0
7+
for ; j < l && n+len(words[j])+j-i <= maxWidth; j++ {
8+
n += len(words[j])
9+
}
10+
buf := &bytes.Buffer{}
11+
ns := maxWidth - n
12+
for k := i; k < j; k++ {
13+
buf.WriteString(words[k])
14+
if ns > 0 {
15+
m := 0
16+
if j == l {
17+
if j-k == 1 {
18+
m = ns
19+
} else {
20+
m = 1
21+
}
22+
} else {
23+
t := j - k - 1
24+
if t > 0 {
25+
m = ns / t
26+
if ns%t != 0 {
27+
m++
28+
}
29+
} else {
30+
m = ns
31+
}
32+
}
33+
ns -= m
34+
for ; m > 0; m-- {
35+
buf.WriteByte(' ')
36+
}
37+
}
38+
}
39+
o, i = append(o, buf.String()), j
40+
}
41+
return o
42+
}

0 commit comments

Comments
 (0)