题解 | #大胃王牛牛#

大胃王牛牛

https://www.nowcoder.com/practice/4e55777e218b4850928d054a8cddaf50

知识点

模拟,贪心

思路

假设grass和cost的长度为n 首先,我们预处理出grass和cost的差s,若s[0~n-1]<0,那必然无解,否则必然有解。

设sum为区间[ans~~n-1]的和 判断完有解后,我们只需要找到一个下标最小的点,使其一直向右遍历,维护sum=sum+s[i],若sum<0,则需要更新起点下标了。否则,若存在一个点i,使sum[i~n-1]都大于0,那ans即为i+1(下标为0的地方是第一个)

代码c++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param grass int整型vector 
     * @param cost int整型vector 
     * @return int整型
     */
    int can_complete_circuit(vector<int>& grass, vector<int>& cost) {
        // write code here
        int sum=0;
        int s[10005];
        int n=grass.size();
        for(int i=0;i<n;i++)
        {
            s[i]=grass[i]-cost[i];
            sum+=s[i];
        }
        if(sum<0)return -1;
        int ans=0;
        sum=0;
         for(int i=0;i<n;i++)
         {  
            sum+=s[i];
            if(sum<0)
            {
                ans=i+1;
                sum=0;
            }
         }
         return ans+1;

    }
};
全部评论

相关推荐

测试糕手手:社会第一课,随便吹牛逼,直接说四个月,别老实。老实人只会被欺负
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务