小黑跟尚香一起疯狂星期四,然后慢慢跑回家,生活逐渐明朗,完赛了副中心全程马拉松的leetcode之旅:752. 打开转盘锁

news2024/11/27 8:23:40

宽度优先搜索法

class Solution:
    def openLock(self, deadends: List[str], target: str) -> int:
        # 目的地在死亡数组里
        if target in deadends:
            return -1
        # 起点在死亡数字里
        if '0000' in deadends:
            return -1
        # 起点就是目标字符串
        if '0000' == target:
            return 0
        # 定义前向函数
        def prev(num):
            return str(int(num)-1) if num != '0' else '9'
        # 定义后向函数
        def after(num):
            return str(int(num)+1) if num != '9' else '0'
        # 该字符串下一个搜索集合
        def get(str_):
            # 依次对四个数字进行尝试
            arr = list(str_)
            for i in range(4):
                num = arr[i]
                # 前向查询
                arr[i] = prev(num)
                yield (''.join(arr))
                # 后向查询
                arr[i] = after(num)
                yield (''.join(arr))
                arr[i] = num
        # 初始化队列
        q = collections.deque([('0000', 0)])
        # 初始化访问数组,避免死循环
        seen = set(['0000'])
        # 广度优先搜索寻找路径
        while q:
            # 出队操作
            top = q.popleft()
            str_, step = top
            print(str_)
            for s in get(str_):
                # 判断是否为目标
                if s == target:
                    return step + 1
                # 是否在访问数组中或者死亡数组中
                if s not in seen and s not in deadends:
                    q.append((s, step + 1))
                    # 添加访问数组
                    seen.add(s)
        return -1

在这里插入图片描述

A*算法寻路

# 定义A*算法类
class AStar(object):
    def __init__(self, status, target, g):
        self.status = status
        self.g = g
        self.h = AStar.getH(status, target)
        self.f = self.g + self.h 
    @staticmethod
    def getH(status, target):
        sum_ = 0
        # 对四个字符分别求曼哈顿距离
        for i in range(4):
            dis = abs(int(status[i]) - int(target[i]))
            sum_ += min(dis, 10 - dis)
        return sum_
    # 排序
    def __lt__(self, other):
        return self.f < other.f
class Solution:
    def openLock(self, deadends: List[str], target: str) -> int:
        # 起点或终点在死亡数组里
        if '0000' in deadends or target in deadends:
            return -1
        # 起点就是终点
        if '0000' == target:
            return 0
        # 获取向右拨动的字符
        def forward(c):
            return str(int(c) + 1) if c != '9' else '0'
        # 获取向左拨动的字符
        def pre(c):
            return str(int(c) - 1) if c != '0' else '9'
        # 获得孩子结点的状态
        def get(str_):
            arr = list(str_)
            for i in range(4):
                c = arr[i]
                # 右拨动
                arr[i] = forward(c)
                yield ''.join(arr)
                # 左拨动
                arr[i] = pre(c)
                yield ''.join(arr)
                arr[i] = c
        # 初始化优先队列
        q = [AStar('0000', target, 0)]
        # 初始化访问数组
        seen = {'0000'}
        # 遍历优先队列
        while q:
            # 出队操作
            top = heapq.heappop(q)
            # 获取结点属性
            g = top.g
            f = top.f
            status = top.status
            for str_ in get(status):
                if str_ == target:
                    return g + 1
                if str_ not in seen and str_ not in deadends:
                    seen.add(str_)
                    heapq.heappush(q, AStar(str_, target, g + 1))
        return -1

在这里插入图片描述

小黑生活

去笔试去的路上

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

吃份烤冷面

在这里插入图片描述

收到笔试通知

在这里插入图片描述

回学校开就业中心证明

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

开完证明做一小时足疗+半小时按摩

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

终于习惯了坐地铁上不戴口罩啦

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

跟尚香的疯狂星期四

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

去喝茶百道,热爱并记录生活的小黑黑

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

去尚香自习室转转,感受一下学习氛围

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

小跑着回家啦,准备第二天实习

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

报名个中级软考

在这里插入图片描述

去交材料啦,临走时主任送我一杯咖啡,开心啦~

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

午餐牛肉堡

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

吃完饭喝个茶

在这里插入图片描述

晚餐造一造,来个豪华麻辣香锅

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

收到笔试通知

在这里插入图片描述

跟导师监考蓝桥杯

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

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

午饭学校吃个烤冷面+蟹黄面+百香果茶

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

回宿舍尝一尝老黑们昨天的剩饭

在这里插入图片描述

马拉松前一天小造一下

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

去领马拉松参赛物资啦

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

坐地铁去副中心

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

跑崩了,不过坚持下来了,遇见了好久不见的本科同学

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

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

照片传过来了,人生不求一直奔跑,要跑跑停停一直向前

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

回家从五点睡到了晚上12点,吃个牛排

在这里插入图片描述

早餐宇飞牛肉面

在这里插入图片描述

来个太平洋咖啡桃花美式

在这里插入图片描述

证书出来了

在这里插入图片描述

午餐鳕鱼堡套餐

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

实习终于有了方向,尽可能多接触实际的东西,花絮:看到了有人摸鱼哈哈哈哈

在这里插入图片描述

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

晚餐蹄筋面套餐在这里插入图片描述

开启小汤3,练完琴发现沙尘暴太大了

在这里插入图片描述

回家喝点儿“石榴酒”

在这里插入图片描述

早起去面试,虽然竞争很大,但小黑也要积极面对毕业季

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

午饭牛肉双拼外卖

在这里插入图片描述

午后太平洋咖啡来杯香草咖啡,下午继续努力!在这里插入图片描述

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

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

相关文章

Python与c语言的区别与联系

Python与c语言都是一种机器学习语言&#xff0c;进过长时间的学习和总结&#xff0c;我将Python与c语言的一些特点总结成以下几点&#xff0c;不全面还望多多指正。 1、因为C语言是编译型语言&#xff0c;python是解释型语言&#xff0c;所以python的执行速度没有C语言那么快。…

回归预测 | MATLAB实现GA-GRU遗传算法优化门控循环单元的数据多输入单输出回归预测

回归预测 | MATLAB实现GA-GRU遗传算法优化门控循环单元的数据多输入单输出回归预测 目录回归预测 | MATLAB实现GA-GRU遗传算法优化门控循环单元的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料效果一览 基本介绍 MATLAB实现GA-GRU遗传算法优化门控循环单元的数据多…

详解Nginx代理WordPress搭建个人网站系统

1、搭建环境说明 服务器&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) PHP&#xff1a;php-8.2.4 PHP: Downloads Nginx: 1.24.0 http://nginx.org/en/download.html WordPress:6.2 Download – WordPress.org Mysql&#xff1a;5.7.22 MySQL Communit…

【Java EE】-网络编程(一) 网络初识

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【JavaEE】 主要内容&#xff1a;单机、局域网、广域网、交换机、路由器。IP地址&#xff0c;端口号&#xff0c;协议&#xff0c;五元组。 协议分层&#xff0c;OSI七层网络模型…

【开源项目】SpringBoot实现接口加密解密

需求背景 在我们日常的Java开发中&#xff0c;免不了和其他系统的业务交互&#xff0c;或者微服务之间的接口调用 如果我们想保证数据传输的安全&#xff0c;对接口出参加密&#xff0c;入参解密。 但是不想写重复代码&#xff0c;我们可以提供一个通用starter&#xff0c;提…

数据结构系列17——lambda表达式

目录 1. 基本概念 2. 基本语法 3. 函数式接口 4. Lambda表达式的基本使用 4.1 语法精简 5. 变量捕获 6. Lambda在集合当中的使用 1. 基本概念 Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一…

再聊ChatGPT(关于安全,隐私和法律方面的风险)

我在上一篇博文中有谈到ChatGPT 发展可能会经历的一些阶段。ChatGPT的必经阶段&#xff1a;野蛮生长时代-管理层监管与风险提示-号召国产化-规范化常态化。 昨天刚好看到监管部门发文 说明监管部门已经意识到到ChatGPT野蛮生长阶段&#xff0c;其实是存在很多漏洞和问题的。 …

2022年 全国职业院校技能大赛(中职组)网络安全赛项 正式赛卷 A模块 做题记录

评分标准文件及环境 评分标准&#xff1a;ZZ-2022029 网络安全赛项正式赛卷.zip 自己做的Linux靶机&#xff1a; 自己做的Windows靶机&#xff1a; 文章目录评分标准文件及环境A-1 任务一 登录安全加固1. 密码策略&#xff08;Windows&#xff0c;Linux&#xff09;a. 最小密码…

年少不知回损好,却把插损当作宝

一博高速先生成员&#xff1a;黄刚 因为本期要讲的是插损和回损的关系&#xff0c;因此本文的开头&#xff0c;我们还是首先回顾下S参数的概念。首先我们需要知道S参数其实是个黑匣子&#xff0c;什么是黑匣子呢&#xff0c;那就是我们其实不需要知道它包含了哪些链路结构&…

steam游戏搬砖项目怎么做?月入过万的steam搬砖项目教程拆解

steam游戏搬砖项目怎么做?月入过万的steam搬砖项目教程拆解 大家好&#xff0c;我是童话姐姐&#xff0c;今天继续来聊Steam搬砖项目。 Steam搬砖项目也叫CSGO搬砖项目&#xff0c;它并不是什么刚面世的新项目&#xff0c;是已经存在至少七八年的一个资深老牌项目。这个项目…

QT4与QT5兼容问题

QT4 与QT5 兼容&#xff0c;源码差异部分通过QT_VERSION 宏来区分 常见区别 widgets prinsupport charts 等模块一如方式&#xff0c;Qt5 将QtWidgets QtPrintsupport 模块从QtGui 中分离出来&#xff0c;QT4 中没有qjson4 和 charts 模块&#xff0c;需要特殊处理 在pro文件…

SpringSecurity之基础认知

前言 之前一直说开一个SpringSecurity的专栏&#xff0c;今天抽空整理一下&#xff0c;准备开始更新。 也欢迎大家订阅此专栏&#xff01; 什么是SpringSecurity&#xff1f; Spring是非常成功的Java应用框架&#xff0c;目前是非常主流的开发框架。Spring Securtiy正是我们…

RPC 漫谈: 限流问题

RPC 漫谈&#xff1a; 限流问题 微服务之间的 RPC 调用往往会使用到限流功能&#xff0c;但是很多时候我们都是用很简单的限流策略&#xff0c;亦或是工程师拍脑袋定一个限流值。 这篇文章主要讨论在 RPC 限流中&#xff0c;当前存在的问题和可能的解决思路。 为什么需要限流…

Tailwind CSS 小案例,创建漂亮的收藏卡片列表

作为人类&#xff0c;我们有一种天生的倾向&#xff0c;喜欢收集不同的物品&#xff0c;并根据兴趣将它们分组。从邮票到书籍&#xff0c;人们收集和分组的物品种类繁多。定义上&#xff0c;收藏是一组事物&#xff0c;通常是由某个人创建的。例如&#xff0c;很多孩子会收集漫…

Docker In Docker

Docker in Docker 适用场景 ​ 在 CI 中&#xff0c;通常会有一个 CI Engine 负责解析流程&#xff0c;控制整个构建过程&#xff0c;而将真正的构建交给 Agent 去完成。例如&#xff0c;Jenkins 、GitLab 均是如此 同时 Agent 是动态的&#xff0c;构建时才需要&#xff0c;…

查询淘宝商品历史价格(用Python记录商品每天价格变化)

taobao.item_history_price-获取淘宝天猫历史价格接口 思路&#xff1a; 第一步抓取商品的价格存入 Python 自带的 SQLite 数据库每天定时抓取商品价格使用 pyecharts 模块绘制价格折线图&#xff0c;让低价一目了然 接口说明&#xff1a;通过接口可以拿到整个平台&#xff0…

Tomcat源码:Container接口

参考资料&#xff1a; 《Tomcat - Request请求处理: Container设计》 《Tomcat - Container容器之Engine&#xff1a;StandardEngine》 前文&#xff1a; 《Tomcat源码&#xff1a;启动类Bootstrap与Catalina的加载》 《Tomcat源码&#xff1a;容器的生命周期管理与事件监…

matplotlib绘图看这篇就够了

导入matplotlib第三方库此外&#xff0c;在matplotlib中我们可以只输入y轴&#xff0c;即为只输入一个数组我们也可以输出&#xff0c;x不为必要条件。而且也可以使用plt.xticks()函数进行设置x轴的label。import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [Si…

注意力机制中Q和K相乘的意义是什么?为什么Q和K相乘就可以得到它们之间的相似性/权重矩阵呢?

为什么query和key相乘就能得到学生和教师的相似度呢&#xff1f;它的内部原理是什么? 在注意力机制中&#xff0c;query 和 key 相乘得到的相似度其实是通过计算两个向量之间的点积来实现的。具体而言&#xff0c;我们将 query 和 key 进行点积运算后【这里的点积运算可以看作…

从C出发 23 --- 函数专题练习

A&#xff1a;我们可以将 main 理解为操作系统调用的函数&#xff0c;操作系统运行一个应用程序时&#xff0c;就去调用这个应用程序里面的main函数 B: 函数中只能定义变量&#xff0c;定义的变量叫局部变量 C: 从操作系统的角度来看 C 并不一定正确&#xff0c;因为从技术角…