添加 0134. 加油站.md C语言贪心解法方法二

This commit is contained in:
243wresfdxvc
2022-04-21 09:55:19 +00:00
parent 4f4a54fa79
commit 4154d3db2e

View File

@ -341,6 +341,7 @@ var canCompleteCircuit = function(gas, cost) {
``` ```
### C ### C
贪心算法:方法一
```c ```c
int canCompleteCircuit(int* gas, int gasSize, int* cost, int costSize){ int canCompleteCircuit(int* gas, int gasSize, int* cost, int costSize){
int curSum = 0; int curSum = 0;
@ -370,5 +371,36 @@ int canCompleteCircuit(int* gas, int gasSize, int* cost, int costSize){
} }
``` ```
贪心算法:方法二
```c
int canCompleteCircuit(int* gas, int gasSize, int* cost, int costSize){
int curSum = 0;
int totalSum = 0;
int start = 0;
int i;
for(i = 0; i < gasSize; ++i) {
// 当前i站中加油量与耗油量的差
int diff = gas[i] - cost[i];
curSum += diff;
totalSum += diff;
// 若0到i的加油量都为负则开始位置应为i+1
if(curSum < 0) {
curSum = 0;
// 当i + 1 == gasSize时totalSum < 0此时i为gasSize - 1),油车不可能返回原点
start = i + 1;
}
}
// 若总和小于0加油车无论如何都无法返回原点。返回-1
if(totalSum < 0)
return -1;
return start;
}
```
----------------------- -----------------------
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div> <div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>