首页 > 其他分享 >63. 不同路径 II(leetcode)

63. 不同路径 II(leetcode)

时间:2024-08-31 22:36:45浏览次数:3  
标签:obstacleGrid return int II 63 110 backup leetcode

简单dp
https://leetcode.cn/problems/unique-paths-ii/description/

传统做法:

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int f[110]={0}; // 优化一维
        f[1]=1;
        int m = obstacleGrid.size();
        int n = obstacleGrid[0].size();
        for(int i=1;i<=m;i++)
        {
            for(int j=1;j<=n;j++)
            {
                if(obstacleGrid[i-1][j-1] == 1)f[j]=0;
                else f[j]=f[j]+f[j-1];
            }
        }
        return f[n];
    }
};

搜索做法:

class Solution {
public: 
    int ans=0;
    int w[110][110]={0};
    int backup[110][110]={0};
    int m=0,n=0;
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        for(int i=1;i<=obstacleGrid.size();i++)
            for(int j=1;j<=obstacleGrid[0].size();j++)
                w[i][j]=obstacleGrid[i-1][j-1];
        m=obstacleGrid.size();
        n=obstacleGrid[0].size();
        return dfs(m,n);
        
    }
    // 倒序记搜实现dp
    int dfs(int x, int y)
    {
        if(x<0 || x>m || y<0 || y>n)return 0;
        if(backup[x][y] != 0)return backup[x][y];
        if(w[x][y]==1)return 0;
        if(x == 1 && y == 1)
        {
            return 1; // 得到答案
        }
        backup[x][y] = dfs(x-1,y)+dfs(x,y-1); // f[i][j]=f[i-1][j]+f[i][j-1]
        return backup[x][y];
    }

};

 

标签:obstacleGrid,return,int,II,63,110,backup,leetcode
From: https://www.cnblogs.com/lxl-233/p/18390872

相关文章

  • NC 二分查找-II
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。描述请实现有重复数字的升序数组的二分查找给定一个元素有序的(升序)长......
  • Java毕设项目II基于Java的工厂车间管理系统设计与实现
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言随着工业4.0时代的到来,车间管理的智能化......
  • 数据结构:(LeetCode965)单值二叉树
     一:定义如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回false。示例1:输入:[1,1,1,1,1,null,1]输出:true示例2:输入:[2,2,2,5,2]输出:false 提示:给定树的节点数范围是 [1,100]。每个节点的值都是......
  • 数据结构:(LeetCode 965)相同的树
    给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入:p=[1,2,3],q=[1,2,3]输出:true示例2:输入:p=[1,2],q=[1,null,2]输出:false示例3:输入:p=[1,2,1]......
  • 代码随想录算法训练营,8月31日 | 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点
    24.两两交换链表中的节点题目链接:24.两两交换链表中的节点文档讲解︰代码随想录(programmercarl.com)视频讲解︰两两交换链表中的节点日期:2024-08-31做前思路:用上虚拟头指针,从头开始,先指向2再到1,再到3,但要注意保留原本的结点。Java代码如下:classSolution{publicListN......
  • leetcode刷题day4|链表部分(24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点、
    前言:链表练习的第二天,对链表的理解加深了24.两两交换链表中的节点这个题一开始的思路是用cur和next两个指针来做,但是绕来绕去绕迷糊了,最后超时了。把错误的代码放在下面警醒大家:主要问题出现在这两行代码,next.next发生了更改。next.next=next.next.next;next.next.nex......
  • leetcode刷题day3|链表部分( 203.移除链表元素、707.设计链表、206.反转链表)
    前言:链表部分之前刷过一些题,掌握的还可以,希望可以顺利把这部分题刷完。203.移除链表元素思路:自己创建一个头节点,使新的头节点指向旧的头节点。错误尝试:一开始考虑的比较复杂,设置了指针pre,能够想到直接比较cur.next.val和val的值会使代码更加简洁,但也要注意想清楚如果删除......
  • 【每日一题】LeetCode 1343.大小为K且平均值大于等于阈值的子数组数目(数组、滑动窗口)
    【每日一题】LeetCode1343.大小为K且平均值大于等于阈值的子数组数目(数组、滑动窗口)题目描述给定一个整数数组arr和两个整数k和threshold,要求找出数组中长度为k且平均值大于等于threshold的子数组的数量。输入格式arr:一个整数数组。k:子数组的长度。thres......
  • (163)时序收敛--->(13)时序收敛十三
    1目录(a)FPGA简介(b)Verilog简介(c)时钟简介(d)时序收敛十三(e)结束1FPGA简介(a)FPGA(FieldProgrammableGateArray)是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不......
  • TPS63030DSKR开关稳压器芯片中文资料PDF数据手册引脚图产品参数
    TPS63030的说明TPS6303x器件为由两节或三节碱性镍镉或镍氢电池,或单节锂离子或锂聚合物电池。使用单节锂离子或锂聚合物电池时,输出电流可高达600mA,并将其放电至2.5V或更低。降压-升压转换器基于固定频率使用同步整流的脉宽调制(PWM)控制器以获得最大值效率。在低负......