小黑今天上午着急忙慌实习公司楼下笔试,晚上准备和尚香疯狂星期四明天继续现场笔试的leetcode之旅:1091. 二进制矩阵中的最短路径

news2024/11/28 19:24:28

小黑代码1

class Solution:
    def shortestPathBinaryMatrix(self, grid: List[List[int]]) -> int:
        # 一定无解的情况
        if grid[0][0] == 1 or grid[-1][-1] == 1:
            return -1
        # 矩阵长度
        n = len(grid)
        # 起点即终点
        if n == 1:
            return 1
        # 访问集合
        seen = {(0, 0)}
        # 初始化队列
        q = collections.deque([[(0,0), 1]])
        # 开始进行队列操作
        while q:
            # 出队
            top = q.popleft()
            pos = top[0]
            dis = top[1]
            # 八个方向尝试
            for di in [[1, 0], [0, 1], [1, 1], [-1, 0], [0, -1], [-1, -1], [1, -1], [-1, 1]]:
                # 构造坐标
                pos_x = pos[0] + di[0]
                pos_y = pos[1] + di[1]
                # 判断是否出界以及有障碍物
                if 0 <= pos_x < n and 0 <= pos_y < n and (pos_x, pos_y) not in seen and not grid[pos_x][pos_y]:
                    # 到达终点
                    if pos_x == pos_y == n - 1:
                        return dis + 1
                    q.append(((pos_x, pos_y), dis + 1))
                    seen.add((pos_x, pos_y))
        return -1            

在这里插入图片描述

小黑代码2

# A*算法类
class Astar(object):
    def __init__(self, status, target, g):
        self.status = status
        self.target = target
        self.g = g
        self.h = Astar.getH(status, target)
        self.f = self.g + self.h
    @staticmethod
    def getH(status, target):
        print(status)
        dis_x = abs(status[0]-target[0])
        dis_y = abs(status[1]-target[1])
        
        return max(dis_x, dis_y)
    # 排序函数
    def __lt__(self, other):
        if self.f == other.f:
            return self.g < other.g
        return self.f < other.f
class Solution:
    def shortestPathBinaryMatrix(self, grid: List[List[int]]) -> int:
        # 一定无解的情况
        if grid[0][0] == 1 or grid[-1][-1] == 1:
            return -1
        # 数组长度
        n = len(grid)
        # 起点即是终点的情况
        if n == 1:
            return 1
        # 初始化优先队列
        q = [Astar((0, 0), (n-1, n-1), 1)]
        # 访问数组
        visited = set()
        # 开始进行A*算法迭代
        while q:
            # “假设距离”最近的出队
            top = heapq.heappop(q)
            status = top.status
            g = top.g
            if status in visited:
                continue
            visited.add(status)
            # 8个方向
            for di in [(-1,-1), (1,0), (0,1), (-1,0), (0,-1), (1,1), (1,-1), (-1,1)]:
                # 构造心得坐标
                new_pos = [0, 0]
                new_pos[0] = status[0] + di[0]
                new_pos[1] = status[1] + di[1]
                new_pos = (new_pos[0], new_pos[1])
                # 准入条件:未出界+无障碍+没走过
                if 0 <= new_pos[0] < n and 0 <= new_pos[1] < n and not grid[new_pos[0]][new_pos[1]]:
                    # 是否到终点
                    if new_pos[0] ==new_pos[1] == n - 1:
                        return g + 1
                    # 入队列
                    heapq.heappush(q, Astar(new_pos, (n-1, n-1), g + 1))
        return -1

在这里插入图片描述

小黑生活

晚饭吉野家宫保鸡丁套餐

在这里插入图片描述

琴房又没开门又没练成琴,难受,来个烤冷面

在这里插入图片描述

来一小时按摩

在这里插入图片描述

回家一瓶勇闯天涯+牛排

在这里插入图片描述
在这里插入图片描述

早上公司楼底下太平洋咖啡,顺便笔试,然后飞速去实习

在这里插入图片描述
在这里插入图片描述

午饭吉野家牛肉饭

在这里插入图片描述

期待晚上跟尚香的疯狂星期四

在这里插入图片描述

公司里来了只猫咪,好可爱呀

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

抢到了同仁医院的号

在这里插入图片描述

半马领物单出来了

在这里插入图片描述

晚饭麦当劳牛堡

在这里插入图片描述
在这里插入图片描述

回去找尚香的疯狂星期四+DQ冰激凌+骑车吹风,生活要有仪式感

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

早餐宇飞牛肉面啦

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上午笔试,感觉好难啊,之后喝杯喜茶

在这里插入图片描述
在这里插入图片描述

下午和动哥去按摩+足疗,喝杯DQ

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

花500+买的便携屏幕到了,虽然质量不符合预期,但是也还能用,以后咖啡厅学习可以边看课边敲代码啦

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

晚上两个半小时的笔试

在这里插入图片描述

算法题一直出bug了,小黑去潘家园图书馆调试

在这里插入图片描述
在这里插入图片描述

打印比赛承诺书,跟尚香奥林匹克公园约学习啦

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

到达弥远咖啡,继续调试bug

在这里插入图片描述
在这里插入图片描述

晚饭肯德基全鸡+牛堡

在这里插入图片描述
在这里插入图片描述

北京难得的蓝色啦,走在奥体景观大道上真舒服,去领物资

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

去附近骑个车,喝杯茶百道

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

早餐牛排,出发半程马拉松

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

鸣枪起跑啦,这个天气跑得相当舒服

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

回去的地铁上人好多啊

在这里插入图片描述
在这里插入图片描述

回家后报名了一个多月后的密云马拉松,跑起来~

在这里插入图片描述

又增添了一块奖牌

在这里插入图片描述
在这里插入图片描述

照片也传过来了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下午喜茶海盐咖啡,继续想那个A*代码的bug,总算想出来啦

在这里插入图片描述

晚上和老黑们去吃串串香啦,祝贺阿黄公务员上岸

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

中老黑吃吐了

在这里插入图片描述
在这里插入图片描述

回去修个脚,完美,发博客,晚安!!

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

射频功率放大器在空气耦合超声检测系统中的应用

实验名称&#xff1a;空气耦合超声检测系统研究方向&#xff1a;超声测试设备&#xff1a;ATA-8202射频功率放大器、探头、ATA-5620前置放大器、超声波接收器、数据采集卡、计算机。实验过程&#xff1a;图&#xff1a;空气耦合超声检测锂电池系统锂电池空气耦合超声检测具体过…

TryHackMe-Year of the Dog(Linux渗透测试)

Year of the Dog 谁知道呢&#xff1f;狗咬了一口&#xff01; 端口扫描 循例nmap Web枚举 进80 用gobuster扫了一圈没有任何发现&#xff0c;图像也没有隐写 在主页的请求头的cookie有一个id 改成其他错误值会导致异常&#xff0c;看见叫id&#xff0c;习惯性加个了引号 爆…

【java】集合类

文章目录集合根接口LIST列表迭代器Queue|Deque|PriorityQueueSet集合HashSetLinkedHashSetTreeSet键盘读入MapHashMapLinkedHashMapStream流stream()ints()Collections工具类集合根接口 所有的集合类最终都是实现自集合根接口的&#xff0c;比如ArrayList类&#xff0c;它的祖先…

走向国际市场,怎样用Facebook广告抢占商机?

在当今全球化的商业世界中&#xff0c;企业要想在国际市场中占据一席之地&#xff0c;除了打造优质产品和服务外&#xff0c;有效的营销手段也是至关重要的。 而Facebook作为全球最大的社交媒体平台&#xff0c;其广告投放服务为企业提供了一个快速、便捷、有效的推广途径。那…

安全校验和框架---JWT和Shrio

安全架构 加密 分类 可逆加密和不可逆加密 不可逆加密&#xff1a;常见的不可逆加密算法有MD5&#xff0c;HMAC&#xff0c;SHA1、SHA-224、SHA-256、SHA-384&#xff0c;和SHA-512&#xff0c;其中SHA-224、SHA-256、SHA-384&#xff1b; 可逆加密分为对称加密和非对称加密…

2023最新面试题-Java-5

自定义类加载器 1. 为什么需要自定义类加载器 网上的大部分自定义类加载器文章&#xff0c;几乎都是贴一段实现代码&#xff0c;然后分析一两句自定义ClassLoader的 原理。但是我觉得首先得把为什么需要自定义加载器这个问题搞清楚&#xff0c;因为如果不明白它的作用的情况 …

人工智能动物农场的猪、牛和蟑螂

人工智能动物农场的猪、牛和蟑螂 农业正在成为由人工智能驱动的以数据为中心的业务。中国的大型科技公司正在使用神经网络支持的计算机视觉、可穿戴设备和预测分析算法来重新构想猪、鸡、牛、鹅和蟑螂养殖。 《南华早报》报道称&#xff0c;好医生制药集团每年在中国东南部的四…

OpenHarmony社区运营报告(2023年3月)

目录 本月快讯 一、代码贡献 二、生态进展 三、社区治理 五、社区活动 六、社区及官网运营 本月快讯 • 《OpenHarmony 2022年度运营报告》于3月正式发布&#xff0c;2022年OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;开源项目潜心务实、深耕发展&am…

优化Key顺序提升ClickHouse查询性能

ClickHouse 键列顺序不仅影响表压缩效果&#xff0c;对查询性能也有很大影响&#xff0c;正确使用键列的顺序可以跳过大粒度数据范围&#xff0c;提高查询效率。本文通过示例进行测试不同场景的查询性能&#xff0c;从而让我们了解如何选择键列及其顺序。 测试数据 首先创建并…

从DY用户页面获取作品列表

最近DY的web端更新比较频繁&#xff0c;所以搞了很多方案来应对更新问题。 本文内容是其中一种方案&#xff0c;从用户主页的HTML响应内容中抽取user信息和作品列表数据。 下图中出现的内容都是在html名为RENDER_DATA的script标签中&#xff0c;以urlencode编码。 比如昵称、粉…

copilot技巧

copilot技巧 csdn排版不太好&#xff0c;推荐notion查看&#xff1a;https://superb-face-6ae.notion.site/copilot-25cf0f9882364056b5c76909b3a66ef9 一些基础原理&#xff1a; 我们想要使用copilot来干嘛呢&#xff1f;来生成代码。 怎样让它生成代码呢&#xff1f;给它一…

【PyTorch】第七节:数据加载器

作者&#x1f575;️‍♂️&#xff1a;让机器理解语言か 专栏&#x1f387;&#xff1a;PyTorch 描述&#x1f3a8;&#xff1a;PyTorch 是一个基于 Torch 的 Python 开源机器学习库。 寄语&#x1f493;&#xff1a;&#x1f43e;没有白走的路&#xff0c;每一步都算数&#…

GitHub收藏夹分类列表

前言 GitHub是一个基于Git的国际代码托管网站&#xff0c;其内容质量较高&#xff0c;用户在浏览时经常会收藏他人的项目&#xff0c;当收藏的项目越来越多后&#xff0c;用户再想查找之前特定的收藏项目会非常困难。 因此我们希望分类管理GitHub收藏夹&#xff0c;值得注意的…

Golang每日一练(leetDay0034) 二叉树专题(3)

目录 100. 相同的树 Same Tree &#x1f31f; 101. 对称二叉树 Symmetric Tree &#x1f31f; 102. 二叉树的层序遍历 Binary Tree Level-order Traversal &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一…

pdf怎么转换ppt格式,两个方法转换

PDF作为一种常用的文件格式&#xff0c;被大众所熟悉。虽然PDF具备的稳定性&#xff0c;安全性&#xff0c;以及很强的兼容性可以让我们更方便顺畅的阅读PDF文件&#xff0c;但若是有需要展示PDF文件内容的时候&#xff0c;其优点就没有那么凸显了&#xff0c;这时还是将pdf转换…

数据结构与算法基础(王卓)(25)线性表的查找(1):顺序查找(线性查找)

基本基础概念&#xff1a; 看这就不用去翻PPT了 查找&#xff1a; 根据给定的某个值&#xff0c;在查找表中确定一个与其关键字等于给定值的数据元素&#xff08;或记录&#xff09; 关键字&#xff1a; 用来表示一个数据元素&#xff08;或记录&#xff09;的某个数据项的值 主…

系统安全与应用【下】

文章目录1.开关机安全控制1.1 GRUB限制1.2 实例&#xff1a;GRUB 菜单设置密码2.终端登录安全控制2.1 限制root只在安全终端登录2.2 禁止普通用户登录3.弱口令检测3.1 Joth the Ripper,JR4.网络端口扫描4.1 nmap命令1.开关机安全控制 1.1 GRUB限制 限制更改GRUB引导参数 通常情…

读懂MAC地址

MAC地址是一种用于标识计算机网络设备的唯一地址。它是由48个二进制数字组成的&#xff0c;通常表示为12个十六进制数字&#xff0c;每两个数字之间用冒号或连字符分隔开。MAC地址由设备制造商在生产过程中分配&#xff0c;以确保网络上每个设备都有唯一的标识符。 MAC地址的规…

投影仪怎么连接电脑?快来看看这3种方法!

案例&#xff1a;如何连接电脑和投影仪&#xff1f; 【想看电影&#xff0c;但是电脑屏幕太小&#xff0c;我想把电脑上的内容通过投影仪投到大屏幕上。有小伙伴知道如何连接电脑和投影仪吗&#xff1f;谢谢大家&#xff01;】 使用投影仪可以将电脑或其他设备上的内容投放到…

Java——矩形覆盖

题目链接 牛客在线oj题——矩形覆盖 题目描述 我们可以用 21 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 21 的小矩形无重叠地覆盖一个 2*n 的大矩形&#xff0c;从同一个方向看总共有多少种不同的方法&#xff1f; 数据范围&#xff1a;0≤n≤38 进阶&#xff1…