开始学算法1

来源:互联网 发布:js幻灯片轮播代码 编辑:程序博客网 时间:2024/06/06 03:00

在一条环路上有 N 个加油站,其中第 i 个加油站有汽油gas[i],并且从第i个加油站前往第i+1个加油站需要消耗汽油cost[i]。

你有一辆油箱容量无限大的汽车,现在要从某一个加油站出发绕环路一周,一开始油箱为空。

求可环绕环路一周时出发的加油站的编号,若不存在环绕一周的方案,则返回-1。

public class Solution {    /*     * @param gas: An array of integers     * @param cost: An array of integers     * @return: An integer     */    public int canCompleteCircuit(int[] gas, int[] cost) {        //循环遍历所有位置        for(int i=0;i<gas.length;i++){            int now=0;            //连第一站都无法开出,搜索下一个            if(gas[i]<cost[i])                continue;            else {                int pos;//汽车位置                int getReal=gas[i]-cost[i];//真实的耗油量                now+=getReal;//现有油量                for(pos=(i+1)%gas.length;pos!=i&&now>0;pos=(pos+1)%gas.length){                    getReal=gas[pos]-cost[pos];                    now+=getReal;//现有油量                }                //满足条件,返回起始站点位置                if(pos==i&&now>=0)                    return i;            }        //均不满足条件        return -1;    }}

总的思路就是循环遍历,不满足条件的就跳过。没什么好说的,应该有更好的方法来解决这个问题。

原创粉丝点击