题解 | #牛群迁徙#

牛群迁徙

https://www.nowcoder.com/practice/686d79ac54874f5f8abbb83184102873

知识点

动态规划

思路

设river数组的长度为n

考虑每一个点都可以转移到后续的点,所以我们假设dp[i]代表从下标0走到i所需的最小步数。对于每一个点i,都一步可达[i+1~i+river[i]]的所有点。

所以步数转移方程为min(dp[i+j],dp[i]+1)

遍历每一个点,维护dp数组即可,答案ans=dp[n-1]

代码

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param rivers int整型vector 
     * @return int整型
     */
    int min_jumps(vector<int>& rivers) {
        // write code here
        int dp[100005];
        dp[0]=0;
          int n=rivers.size();
        for(int i=1;i<=n;i++)dp[i]=0x3f3f3f3f;
      
        for(int i=0;i<rivers.size();i++)
        {
             for(int j=1;j<=rivers[i]&&i+j<n;j++)
             {
                dp[i+j]=min(dp[i+j],dp[i]+1);
             }
        }
        return dp[n-1];
    }
};
全部评论

相关推荐

07-28 16:10
门头沟学院 Java
连笔试都没有就直接挂了&nbsp;这是学历厂吗两段大厂实习一段中厂一点机会都没有吗真的很难绷
xiaolihuam...:校招挂了,然后反手给我捞了个社招
投递虾皮信息等公司10个岗位
点赞 评论 收藏
分享
07-03 16:13
嘉应学院 Python
xiaolihuam...:很明显骗子,如果是hr直接约你面试了,哪用得着内推,如果是员工的话,你得多优秀,一线员工直接加你微信,
点赞 评论 收藏
分享
牛客nb666号:看数据范围, -1e4~1e4, 用一个计数数组存一下, 再按个数让k减到0就行; 堆排不是O(n)的, 快速选择算法是O(n)但随机性较强
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 18:38
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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