Skip to content

Commit e0b5cda

Browse files
committed
add new files
1 parent 4a14518 commit e0b5cda

7 files changed

+158
-1
lines changed

303. Range Sum Query - Immutable.go

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package main
2+
3+
type NumArray struct {
4+
nums []int
5+
}
6+
7+
func Constructor(nums []int) NumArray {
8+
nn := []int{}
9+
if len(nums) <= 1 {
10+
nn = nums
11+
} else {
12+
nn = append(nn, nums[0])
13+
for i := 1; i < len(nums); i++ {
14+
nn = append(nn, nums[i]+nn[i-1])
15+
}
16+
}
17+
return NumArray{
18+
nums: nn,
19+
}
20+
}
21+
22+
func (this *NumArray) SumRange(i int, j int) int {
23+
if i == 0 {
24+
return this.nums[j]
25+
} else {
26+
return this.nums[j] - this.nums[i-1]
27+
}
28+
}
29+
30+
//
31+
//func main() {
32+
// r := []int{-2, 0, 3, -5, 2, -1}
33+
// a := Constructor(r)
34+
// b := a.SumRange(0, 2)
35+
// fmt.Println(b)
36+
//}

307. Range Sum Query - Mutable.go

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package main
2+
3+
import "github.com/olivere/elastic"
4+
5+
type NumArray struct {
6+
n []int
7+
}
8+
9+
func Constructor(nums []int) NumArray {
10+
n := []int{}
11+
if len(nums) <= 1 {
12+
n = nums
13+
} else {
14+
n = append(n, nums[0])
15+
for i := 1; i < len(nums); i++ {
16+
n = append(n, nums[i]+n[i-1])
17+
}
18+
}
19+
return NumArray{
20+
n: n,
21+
}
22+
}
23+
24+
func (this *NumArray) Update(i int, val int) {
25+
l := len(this.n)
26+
if i < 0 || i > l-1 {
27+
return
28+
}
29+
var diff int
30+
if i == 0 {
31+
diff = val - this.n[0]
32+
} else {
33+
diff = val - (this.n[i] - this.n[i-1])
34+
}
35+
for j := i; j < l; j++ {
36+
this.n[j] += diff
37+
}
38+
}
39+
40+
func (this *NumArray) SumRange(i int, j int) int {
41+
if i == 0 {
42+
return this.n[j]
43+
} else {
44+
return this.n[j] - this.n[i-1]
45+
}
46+
}

345. Reverse Vowels of a String.go

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package main
2+
3+
func reverseVowels(s string) string {
4+
t := []byte(s)
5+
m := make(map[byte]bool)
6+
m['o'], m['e'], m['a'], m['i'], m['u'] = true, true, true, true, true
7+
m['O'], m['E'], m['A'], m['I'], m['U'] = true, true, true, true, true
8+
for i, j := 0, len(t)-1; i < j; i, j = i+1, j-1 {
9+
for i < j && !m[t[i]] {
10+
i++
11+
}
12+
for j > i && !m[t[j]] {
13+
j--
14+
}
15+
if i >= j {
16+
break
17+
}
18+
t[i], t[j] = t[j], t[i]
19+
}
20+
return string(t)
21+
22+
}

383. Ransom Note.go

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package main
2+
3+
//一个入hash表,查另一个
4+
func canConstruct(ransomNote string, magazine string) bool {
5+
m := make(map[rune]int)
6+
for _, v := range magazine {
7+
m[v]++
8+
}
9+
for _, v := range ransomNote {
10+
c, ok := m[v]
11+
if ok == false || c == 0 {
12+
return false
13+
}
14+
m[v]--
15+
}
16+
return true
17+
}

409. Longest Palindrome.go

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package main
2+
3+
func longestPalindrome(s string) int {
4+
count := make([]int, 128)
5+
for _, c := range s {
6+
count[c]++
7+
}
8+
ans := 0
9+
for _, v := range count {
10+
ans += v / 2 * 2
11+
if ans%2 == 0 && v%2 == 1 {
12+
ans++
13+
}
14+
}
15+
return ans
16+
}

434. Number of Segments in a String.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ func countSegments(s string) int {
55
count := 1
66
found := false
77
for i := 0; i < len(s); i++ {
8-
if i > 0 && s[i] == ' ' && s[i+1] != ' ' {
8+
if i > 0 && s[i] == ' ' && s[i-1] != ' ' {
99
count++
1010
}
1111
if s[i] != ' ' {
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package main
2+
3+
func findDuplicates(nums []int) []int {
4+
5+
m := make(map[int]int)
6+
for _, v := range nums {
7+
if _, ok := m[v]; ok {
8+
m[v]++
9+
} else {
10+
m[v] = 1
11+
}
12+
}
13+
ret := []int{}
14+
for k, v := range m {
15+
if v == 2 {
16+
ret = append(ret, k)
17+
}
18+
}
19+
return ret
20+
}

0 commit comments

Comments
 (0)