力扣:字母迷宫,python

这里写自定义目录标题

  • 问题描述
  • 题解
  • 踩坑记录
    • global和nonlocal关键字的区别:
    • 类中可以用实例变量替换全局变量

问题描述

字母迷宫游戏初始界面记作 m x n 二维字符串数组 grid,请判断玩家是否能在 grid 中找到目标单词 target。
注意:寻找单词时 必须 按照字母顺序,通过水平或垂直方向相邻的单元格内的字母构成,同时,同一个单元格内的字母 不允许被重复使用 。
在这里插入图片描述

题解

注:该方法时间复杂度较高

class Solution:

    def wordPuzzle(self, grid: List[List[str]], target: str) -> bool:
        row = len(grid)
        column = len(grid[0])
        self.Flag = False

        def walk(i, j, k, pos):
            if i + 1 < row and k + 1 < len(target) and grid[i + 1][j] == target[k + 1]:
            # 向上走
                if (i + 1, j) not in pos:
                # 判断该单元格有没有走过
                    walk(i + 1, j, k + 1, pos + [(i + 1, j)])

            if i - 1 >= 0 and k + 1 < len(target) and grid[i - 1][j] == target[k + 1]:
            # 向下走
                if (i - 1, j) not in pos:
                    walk(i - 1, j, k + 1, pos + [(i - 1, j)])

            if j + 1 < column and k + 1 < len(target) and grid[i][j + 1] == target[k + 1]:
            # 向右走
                if (i, j + 1) not in pos:
                    walk(i, j + 1, k + 1, pos + [(i, j + 1)])

            if j - 1 >= 0 and k + 1 < len(target) and grid[i][j - 1] == target[k + 1]:
            # 向左走
                if (i, j - 1) not in pos:
                    walk(i, j - 1, k + 1, pos + [(i, j - 1)])

            if k == len(target) - 1:
                self.Flag = True
                return

        for i in range(row):
            for j in range(column):
                if grid[i][j] != target[0]:
                    continue
                walk(i, j, 0, [(i, j)])

        return self.Flag

踩坑记录

global和nonlocal关键字的区别:

  • global申明全局变量,即最外层变量
  • nonlocal申明外一层变量
def scope_test():
    def do_local():
        spam = "local spam"

    def do_nonlocal():
        nonlocal spam
        spam = "nonlocal spam"

    def do_global():
        global spam
        spam = "global spam"

    spam = "test spam"
    do_local()
    # do_local()中的spam是函数do_local内的局部变量,修改以后无法影响到外层,因此输出  test spam
    print("After local assignment:", spam)
    
    do_nonlocal()
    # do_nonlocal()中的spam用nonlocal修饰,相当于对do_nonlocal()外一层函数scope_test()中的spam进行修改
    # 因此输出 nonlocal spam
    print("After nonlocal assignment:", spam)
    
    do_global()
    # do_global()中的spam用global修饰,相当于对最外层中的spam进行修改
    # 输出语句仍位于scope_test(),因此输出 nonlocal spam
    print("After global assignment:", spam)

scope_test()
# do_global()中的spam用global修饰,因此最外层有全局变量spam=‘global spam’
print("In global scope:", spam)

类中可以用实例变量替换全局变量

self.实例变量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/492092.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++ leetcode】双指针(专题完结)

15. 三数之和 题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的…

P1443马的遍历 典bfs

题目&#xff1a; 代码&#xff1a; #include<algorithm> #include<iostream> #include<cstring> #include<queue>using namespace std;int n,m;int dx[] {-1,-1,-2,-2,1,1,2,2}; int dy[] {-2,2,-1,1,-2,2,-1,1}; bool vis[450][450];struct node{…

秋招打卡算法题第一天

一年多没有刷过算法题了&#xff0c;已经不打算找计算机类工作了&#xff0c;但是思来想去&#xff0c;还是继续找吧。 1. 字符串最后一个单词的长度 public static void main(String[] args) {Scanner in new Scanner(System.in);while(in.hasNextInt()){String itemin.nextL…

Ubuntu 下统计文件数量的命令

参考:https://blog.csdn.net/kxh123456/article/details/123811580 查看当前目录下的文件数量&#xff08;不包含子目录中的文件&#xff09; ls -l|grep "^-"| wc -l实例展示&#xff1a;如下图所示&#xff0c;当前路径下&#xff0c;有2个json文件和2个文件夹&a…

面向对象【Annotation注解】

文章目录 注解概述注解与注释常见的 Annotation最基本的注解使用@Override@Override@SuppressWarnings元注解@Retention@Target@Documented@Inherited自定义注解格式定义使用注解概述 注解(Annotation)是从 JDK5.0 开始引入,以“@注解名”在代码中存在。例如: @Override @D…

EtherCAT转RS232网关在风电领域的应用

开疆智能EtherCAT转RS232网关在风电领域的应用主要体现在以下几个方面&#xff1a; 1.数据采集与传输&#xff1a;在风力发电设备中&#xff0c;传感器和执行器的数据采集和传输至关重要。EtherCAT转RS232网关可以将风力发电设备中的RS232通信协议转换为EtherCAT协议&#xff0…

Unity 布局元素Layout Element

Layout Element是一种用于控制UI元素在布局组件&#xff08;如Horizontal Layout Group、Vertical Layout Group、Grid Layout Group、Content Size Fitter和Aspect Ratio Fitter&#xff09;中的大小和位置的组件。Layout Element组件可以附加到UI元素上&#xff0c;以便在布局…

操作系统—信号量和条件变量实践

文章目录 信号量和条件变量实践1.实验基本环境(1).基本系统环境 2.信号量(1).如何使用信号量?(2).课上的例子(3).打印合法括号序列(4).打印很多条鱼 3.条件变量(1).为什么选择条件变量?(2).还是课上的例子(3).还是合法括号序列 (4).还是打印很多鱼总结 参考资料 信号量和条件…

设计模式之装饰模式解析

装饰模式 1&#xff09;概述 1.定义 动态地给一个对象增加一些额外的职责&#xff0c;在增加对象功能时&#xff0c;装饰模式比生成子类实现更为灵活。 2.作用 装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为。 3.结构图 4.角色 Component&#xf…

编程语言|C语言——C语言标识符的命名规则

1.标识符简介 在计算机高级语言中&#xff0c;用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符。标识符可以简单认为是一个名字&#xff0c;用来标识变量名、常量名、函数名及数组等。变量名a、b、c,符号常量名PI、Pai,函数名printf、scanf等都是标…

题目:忐忑楼梯Ⅱ

问题描述&#xff1a; 解题思路&#xff1a; 利用差分&#xff0c;当第一个以后的差分元素都为零时就代表楼梯高度等于第一个楼梯的高度。为什么是第一个呢&#xff0c;因为以第一个为标准的区间操作数最少。 注意点&#xff1a;每次都只能加一或减一&#xff0c;ans开ll 题解&…

港澳青年看祖国—千名青年创业家内地暨江港青年交流活动在江举行

为聚焦“一点两地”全新定位&#xff0c;助力纵深推进新阶段粤港澳大湾区建设&#xff0c;3月22日&#xff0c;江门市委统战部、团市委、市青联联合香港深水埗区青年发展及公民教育委员会、愿景基金会、香港青年创业家总商会举办千名青年创业家内地行暨江港青年交流活动&#x…

2024/3/27打卡接龙数列——动态规划(线性DP/最长上升子序列)

目录 题目 思路 代码 题目 思路 这个题求最少删除多个个数&#xff0c;其实是求最长的接龙数列&#xff0c;用总个数-接龙数列的个数就是最少删除的个数。 那么如何求解最长的接龙数列的问题。 思考&#xff0c;每个数都有选或不选的两种选项&#xff08;选&#xff1a;可以…

【Java程序设计】【C00384】基于(JavaWeb)Springboot的民航网上订票系统(有论文)

【C00384】基于&#xff08;JavaWeb&#xff09;Springboot的民航网上订票系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#x…

Pillow教程04:学习ImageDraw+Font字体+alpha composite方法,给图片添加文字水印

---------------Pillow教程集合--------------- Python项目18&#xff1a;使用Pillow模块&#xff0c;随机生成4位数的图片验证码 Python教程93&#xff1a;初识Pillow模块&#xff08;创建Image对象查看属性图片的保存与缩放&#xff09; Pillow教程02&#xff1a;图片的裁…

在FMEA风险控制中,首检的重要性!——SunFMEA软件

在制造业中&#xff0c;FMEA被广泛应用于产品设计、生产过程和产品服务的各个阶段。而首检&#xff0c;作为生产过程中的一个重要环节&#xff0c;同样承载着风险控制和质量保障的重任。 今天SunFMEA软件系统从FMEA风险控制的角度来看&#xff0c;首检具有至关重要的地位。首检…

VS Code配置C/C++环境

1.插件安装完之后最好重启一下软件&#xff0c;这样就可以对插件的配置进行修改 2.配置C/C环境按这篇博客来&#xff0c;基本就能成功。 【C/C】vscode配置C/C环境-CSDN博客 3. 参见&#xff1a; win10下vscode配置c语言环境-阿里云开发者社区 (aliyun.com)

蓝牙耳机什么牌子好?拒绝跟风购买!五大良心品牌推荐

​真无线蓝牙耳机已经成为我们日常生活中不可或缺的数码产品。随着技术的发展&#xff0c;人们对蓝牙耳机的要求越来越高&#xff0c;不仅要求音质出众&#xff0c;还希望长时间佩戴也能保持舒适&#xff0c;并能适应多种使用场景。挑选蓝牙耳机确实需要一些技巧。所以&#xf…

linux 网卡配置 vlan/bond/bridge/macvlan/ipvlan 模式

linux 网卡模式 linux网卡支持非vlan模式、vlan模式、bond模式、bridge模式&#xff0c;macvlan模式、ipvlan模式等&#xff0c;下面介绍交换机端及服务器端配置示例。 前置要求&#xff1a; 准备一台物理交换机&#xff0c;以 H3C S5130 三层交换机为例准备一台物理服务器&…

中科数安——企业文件资料防泄密|数据防泄密|透明加密系统|源代码防泄露

#文件防泄密软件# 中科数安作为领先的信息安全解决方案提供商&#xff0c;专注于为企业及机构提供全面的文件资料防泄密和数据防泄漏解决方案&#xff0c;具体产品和服务涵盖以下几个方面&#xff1a; 中科数安 || 文件资料、数据防泄密系统 PC地址&#xff1a;www.weaem.com …