Skip to content

Commit d90b008

Browse files
committed
✨2739.总行驶距离
1 parent d462c72 commit d90b008

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@
132132
- [2609.最长平衡子字符串](leetcode/easy/t2609/solution.go)
133133
- [2656.K 个元素的最大和](leetcode/easy/t2656/solution.go)
134134
- [2706.购买两块巧克力](leetcode/easy/t2706/solution.go)
135+
- [2739.总行驶距离](leetcode/easy/t2739/solution.go)
135136
- [2760.最长奇偶子数组](leetcode/easy/t2760/solution.go)
136137
- [2765.最长交替子数组](leetcode/easy/t2765/solution.go)
137138
- [2798.满足目标工作时长的员工数目](leetcode/easy/t2798/solution.go)

leetcode/easy/t2739/solution.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package t2739
2+
3+
// 2739. 总行驶距离
4+
// https://leetcode.cn/problems/total-distance-traveled
5+
func distanceTraveled(mainTank int, additionalTank int) int {
6+
ans := 0
7+
for mainTank >= 5 { // 如果主油箱有 5 升油,则消耗 50 升油
8+
ans += 50
9+
mainTank -= 5
10+
if additionalTank > 0 { // 如果副油箱有油,则补充 1 升油
11+
mainTank++
12+
additionalTank--
13+
}
14+
}
15+
ans += mainTank * 10
16+
return ans
17+
}
18+
19+
func distanceTraveledTwo(mainTank, additionalTank int) int {
20+
res := 0 // 初始化总行进距离为0
21+
22+
// 当主油箱中的油量大于等于5时,进行循环计算
23+
for mainTank >= 5 {
24+
// 每次至少能行进5单位距离,累加到结果中
25+
res += mainTank / 5 * 5
26+
// 计算本次能从主油箱中取出的油量,但不超过附加油箱的剩余油量
27+
addNum := (mainTank / 5)
28+
if addNum > additionalTank {
29+
addNum = additionalTank
30+
}
31+
// 更新主油箱和附加油箱的油量
32+
mainTank = mainTank%5 + addNum // 主油箱剩余油量加上取出的油量
33+
additionalTank -= addNum // 附加油箱减去取出的油量
34+
}
35+
36+
// 最后,将剩余的油量转换为行进距离,并累加到结果中,乘以10表示单位转换
37+
return (res + mainTank) * 10
38+
}

leetcode/easy/t2739/solution_test.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package t2739
2+
3+
import "testing"
4+
5+
func TestDistanceTraveled(t *testing.T) {
6+
tests := []struct {
7+
name string
8+
mainTank int
9+
additionalTank int
10+
want int
11+
}{
12+
{name: "Case 1", mainTank: 1, additionalTank: 2, want: 10},
13+
{name: "Case 2", mainTank: 5, additionalTank: 10, want: 60},
14+
{name: "Case 3", mainTank: 9, additionalTank: 2, want: 110},
15+
{name: "Case 4", mainTank: 10, additionalTank: 2, want: 120},
16+
}
17+
for _, tt := range tests {
18+
t.Run(tt.name, func(t *testing.T) {
19+
if got := distanceTraveled(tt.mainTank, tt.additionalTank); got != tt.want {
20+
t.Errorf("distanceTraveled() = %v, want %v", got, tt.want)
21+
}
22+
})
23+
}
24+
}
25+
26+
func TestDistanceTraveledTwo(t *testing.T) {
27+
tests := []struct {
28+
name string
29+
mainTank int
30+
additionalTank int
31+
want int
32+
}{
33+
{name: "Case 1", mainTank: 1, additionalTank: 2, want: 10},
34+
{name: "Case 2", mainTank: 5, additionalTank: 10, want: 60},
35+
{name: "Case 3", mainTank: 9, additionalTank: 2, want: 110},
36+
{name: "Case 4", mainTank: 10, additionalTank: 2, want: 120},
37+
}
38+
for _, tt := range tests {
39+
t.Run(tt.name, func(t *testing.T) {
40+
if got := distanceTraveledTwo(tt.mainTank, tt.additionalTank); got != tt.want {
41+
t.Errorf("distanceTraveled() = %v, want %v", got, tt.want)
42+
}
43+
})
44+
}
45+
}

0 commit comments

Comments
 (0)