Skip to content

Commit b4032dc

Browse files
committed
feat: add golang solution for lcof problem 14II 15 16
1 parent 14ff937 commit b4032dc

File tree

6 files changed

+112
-0
lines changed

6 files changed

+112
-0
lines changed

lcof/面试题14- II. 剪绳子 II/README.md

+20
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,27 @@ var cuttingRope = function(n) {
8888
};
8989
```
9090

91+
### Go
92+
93+
```go
94+
func cuttingRope(n int) int {
95+
if n <= 3 {
96+
return n-1
97+
}
98+
sum := 1
99+
for n > 4 {
100+
sum *= 3
101+
sum = sum%1000000007
102+
n -= 3
103+
}
104+
return sum*n%1000000007
105+
}
106+
```
107+
108+
109+
91110
### ...
111+
92112
```
93113
94114
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
func cuttingRope(n int) int {
2+
if n <= 3 {
3+
return n-1
4+
}
5+
sum := 1
6+
for n > 4 {
7+
sum *= 3
8+
sum = sum%1000000007
9+
n -= 3
10+
}
11+
return sum*n%1000000007
12+
}

lcof/面试题15. 二进制中1的个数/README.md

+17
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,24 @@ var hammingWeight = function(n) {
7272
};
7373
```
7474

75+
### Go
76+
77+
```go
78+
func hammingWeight(num uint32) int {
79+
ans := 0
80+
// num &=num-1 消除最右边的1
81+
for num != 0 {
82+
num &=num-1
83+
ans++
84+
}
85+
return ans
86+
}
87+
```
88+
89+
90+
7591
### ...
92+
7693
```
7794
7895
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
func hammingWeight(num uint32) int {
2+
ans := 0
3+
// num &=num-1 消除最右边的1
4+
for num != 0 {
5+
num &=num-1
6+
ans++
7+
}
8+
return ans
9+
}

lcof/面试题16. 数值的整数次方/README.md

+31
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,38 @@ var myPow = function(x, n) {
9090
};
9191
```
9292

93+
### Go
94+
95+
```go
96+
func myPow(x float64, n int) float64 {
97+
p := abs(n)
98+
res := 1.0
99+
for p != 0 {
100+
if p&1 == 1 {
101+
res *= x
102+
}
103+
x *= x
104+
p = p >>1
105+
}
106+
if n < 0 {
107+
return 1/res
108+
}
109+
return res
110+
}
111+
112+
func abs(x int) int {
113+
if x > 0 {
114+
return x
115+
}
116+
return -x
117+
}
118+
119+
```
120+
121+
122+
93123
### ...
124+
94125
```
95126
96127
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
func myPow(x float64, n int) float64 {
2+
p := abs(n)
3+
res := 1.0
4+
for p != 0 {
5+
if p&1 == 1 {
6+
res *= x
7+
}
8+
x *= x
9+
p = p >>1
10+
}
11+
if n < 0 {
12+
return 1/res
13+
}
14+
return res
15+
}
16+
17+
func abs(x int) int {
18+
if x > 0 {
19+
return x
20+
}
21+
return -x
22+
}
23+

0 commit comments

Comments
 (0)