LeetCode讲解算法2-数据结构[栈和队列](Python版)

文章目录

  • 一、栈
    • 1.1 栈的定义
    • 1.2 栈的实现分析步骤
    • 1.3 栈的应用
      • 匹配圆括号
      • 匹配符号
      • 模2除法(十进制转二进制)
      • 进制转换
  • 二、队列
    • 2.1 单向队列
    • 2.2 双端队列
    • 2.3 队列的应用
      • 验证回文串
      • 滑动窗口最大值


一、栈

1.1 栈的定义

  栈是一种线性数据结构,栈是元素的有序集合,其元素的顺序取决于添加顺序或移除顺序,它有两端,称作顶端和底端,即对应栈的栈顶和栈底,栈中元素的添加称为入栈,而元素的移除称为出栈,栈中元素的添加操作和移除操作都发生在其顶端。
  栈中最后添加的元素将最先被移除,栈的排序原则被称作LIFO,即后进先出,最先添加的元素在栈底,它最后最移出。简单来说,可比喻为几本书或砖头叠在一起,需要依次从上至下一本一本地拿出书,最下面的那本书最后被拿出。

1.2 栈的实现分析步骤

  1、创建一个空栈,通过构造方法创建一个空列表;

class Stack:def __init__(self):self.items = []  # 创建一个空栈,它不需要参数,且会返回一个空栈

  2、向栈(栈顶)中添加元素,通过列表的append()或insert()实现添加新的元素至栈中。(若将列表的尾部作为栈的顶端,则通过append()实现;而若将列表的头部作为栈的顶端,则通过insert()实现,insert()第一个参数表示索引位置,第二个参数即要添加的元素,由于是向栈顶添加元素,则第一个参数为0(列表的下标从0开始));

def push(self, item):self.items.append(item)  # 将一个元素添加到栈的顶端,它需要一个参数item,且无返回值【self.items.insert(0,item)】

  3、删除栈顶元素,通过列表的pop()实现删除栈顶的元素。(若将列表的尾部作为栈的顶端,pop()内无参数,即此时删除列表的末尾元素,也就是栈的顶端元素;而若将列表的头部作为栈的顶端,则pop(0)表示移除列表中下标为0的元素);

def pop(self):return self.items.pop()  # 将栈顶的元素移除,它不需要参数,但会返回顶端的元素,且修改栈的内容【return self.items.pop(0)】

  4、返回栈顶元素,若将列表的尾部作为栈的顶端,则通过len()先取得列表的长度,由于下标是从0开始,所以要减1;而若将列表的头部作为栈的顶端,则直接通过索引列表下标为0的元素);

def peek(self):return self.items[len(self.items) - 1]  # 返回栈顶端的元素,它不需要参数,不会修改栈的内容【return self.items[0]】

  5、检查栈是否为空,通过比较运算符“==”比较栈是否为空,若为空,则返回布尔值False,若不为空,则返回True;

 def isEmpty(self):return self.items == []  # 检查栈是否为空,它不需要参数,且会返回一个布尔值

  6、返回栈中元素数目,通过len()取列表的长度,即返回栈中元素的数目。

def size(self):return len(self.items)  # 返回栈中元素的数目,它不需要参数,且会返回一个整数

  代码实现

# 通过列表实现栈的操作(以列表尾部作为栈的顶端)
class Stack:def __init__(self):self.items = []  # 创建一个空栈,它不需要参数,且会返回一个空栈def isEmpty(self):return self.items == []  # 检查栈是否为空,它不需要参数,且会返回一个布尔值def push(self, item):self.items.append(item)  # 将一个元素添加到栈的顶端,它需要一个参数item,且无返回值def pop(self):return self.items.pop()  # 将栈顶的元素移除,它不需要参数,但会返回顶端的元素,且修改栈的内容def peek(self):return self.items[len(self.items) - 1]  # 返回栈顶端的元素,它不需要参数,不会修改栈的内容def size(self):return len(self.items)  # 返回栈中元素的数目,它不需要参数,且会返回一个整数

1.3 栈的应用

匹配圆括号

  我们知道圆括号由左括号“(”和右括号“)”进行匹配的,通过创建一个空栈来保存括号,从左至右依次处理括号,若匹配到左括号则通过push()方法将其添加至栈中,而若匹配到右括号则通过pop()方法删除栈顶元素,最后若所有括号都匹配则栈为空,程序会返回一个布尔值来表示括号是否匹配。
  程序完整代码及解析如下:

# 通过列表实现栈的操作(以列表尾部作为栈的顶端)
class Stack:def __init__(self):self.items = []  # 创建一个空栈,它不需要参数,且会返回一个空栈def isEmpty(self):return self.items == []  # 检查栈是否为空,它不需要参数,且会返回一个布尔值def push(self, item):self.items.append(item)  # 将一个元素添加到栈的顶端,它需要一个参数item,且无返回值def pop(self):return self.items.pop()  # 将栈顶的元素移除,它不需要参数,但会返回顶端的元素,且修改栈的内容def peek(self):return self.items[len(self.items) - 1]  # 返回栈顶端的元素,它不需要参数,不会修改栈的内容def size(self):return len(self.items)  # 返回栈中元素的数目,它不需要参数,且会返回一个整数# 定义一个有参函数Par_Checker(),其参数parenthesis是输入的括号
def Par_Checker(parenthesis):s = Stack()  # s是一个新创建的空栈,创建一个对象balanced = Trueindex = 0while index < len(parenthesis) and balanced:  # 若当前索引值小于输入的括号的总长度且变量balanced的值为正确时,一直执行while循环下去symbol = parenthesis[index]# 取输入的括号赋给变量symbol,变量index的初值为0if symbol == "(":  # 若匹配到左括号则通过push()方法将其添加至栈中s.push(symbol)else:if s.isEmpty():  # 检查栈是否为空,它不需要参数,会返回一个布尔值balanced = False  # 栈为空,变量balanced的值变为Falseelse:s.pop()  # 若匹配到右括号则通过pop()方法删除栈顶元素index = index + 1  # 索引加一,对下一个括号进行检查if balanced and s.isEmpty():  # 如果栈为空,则代表所有括号都匹配成功return Trueelse:return False#测试
print(Par_Checker("(()(("))#false
print(Par_Checker(")(("))#false
print(Par_Checker("(()(()))"))#true

匹配符号

  通过改进匹配圆括号的程序从而实现对符号“()”、“[]”和“{}”的匹配,在原有的基础上加了一个函数matches(),该函数检查每一个从栈顶移除的符合是否与当前的右符合相匹配,匹配符号的程序完整代码及解析如下:

# 通过列表实现栈的操作(以列表尾部作为栈的顶端)
class Stack:def __init__(self):self.items = []  # 创建一个空栈,它不需要参数,且会返回一个空栈def isEmpty(self):return self.items == []  # 检查栈是否为空,它不需要参数,且会返回一个布尔值def push(self, item):self.items.append(item)  # 将一个元素添加到栈的顶端,它需要一个参数item,且无返回值def pop(self):return self.items.pop()  # 将栈顶的元素移除,它不需要参数,但会返回顶端的元素,且修改栈的内容def peek(self):return self.items[len(self.items) - 1]  # 返回栈顶端的元素,它不需要参数,不会修改栈的内容def size(self):return len(self.items)  # 返回栈中元素的数目,它不需要参数,且会返回一个整数# 定义一个有参函数matches(),该函数检查每一个从栈顶移除的符合是否与当前的右符合相匹配
def matches(left, right):left = "([{"right = ")]}"return left.index(left) == right.index(right)  # index()用于检查子字符串是否在字符串中# 定义一个有参函数Par_Checker(),其参数parenthesis是输入的括号
def Par_Checker(parenthesis):s = Stack()  # s是一个新创建的空栈,创建一个对象balanced = Trueindex = 0while index < len(parenthesis) and balanced:  # 若当前索引值小于输入的符号的总长度且变量balanced的值为正确时,一直执行while循环下去symbol = parenthesis[index]  # 取输入的符号赋给变量symbol,变量index的初值为0if symbol in "([{":  # 若匹配到左符号则通过push()方法将其添加至栈中s.push(symbol)else:if s.isEmpty():  # 检查栈是否为空,它不需要参数,会返回一个布尔值balanced = False  # 栈为空,变量balanced的值变为Falseelse:top = s.pop()  # 若匹配到右符号则通过pop()方法删除栈顶元素if not matches(top, symbol):  # 调用matches()函数检查每一个从栈顶移除的符合是否与当前的右符合相匹配,即若未匹配执行以下语句balanced = Falseindex = index + 1  # 索引加一,对下一个符号进行检查if balanced and s.isEmpty():  # 如果栈为空,则代表所有符号都匹配成功return Trueelse:return False#测试
print(Par_Checker("(({)("))
print(Par_Checker("]("))
print(Par_Checker("{([]})"))

模2除法(十进制转二进制)

  我们知道将十进制转二进制可以通过模2除法的方法实现,也就是除2取余,逆序排列,如下十进制25转换为二进制:

  我们从步骤上可以看出,计算出的第一个余数是得到结果的最后一位,而最后计算出的余数是结果的第一位,所以可以将得到的二进制数看成一系列数字,创建一个空栈,通过一系列方法得到二进制数字。
模2除法的程序完整代码及解析如下:

# 通过列表实现栈的操作(以列表尾部作为栈的顶端)
class Stack:def __init__(self):self.items = []  # 创建一个空栈,它不需要参数,且会返回一个空栈def isEmpty(self):return self.items == []  # 检查栈是否为空,它不需要参数,且会返回一个布尔值def push(self, item):self.items.append(item)  # 将一个元素添加到栈的顶端,它需要一个参数item,且无返回值def pop(self):return self.items.pop()  # 将栈顶的元素移除,它不需要参数,但会返回顶端的元素,且修改栈的内容def peek(self):return self.items[len(self.items) - 1]  # 返回栈顶端的元素,它不需要参数,不会修改栈的内容def size(self):return len(self.items)  # 返回栈中元素的数目,它不需要参数,且会返回一个整数# 创建一个有参函数DivideBy2(),参数为一个十进制数
def DivideBy2(decNumber):s = Stack()  # s是一个新创建的空栈,创建一个对象while decNumber > 0:  # 若输入的十进制大于0,则执行while循环一直下去rem = decNumber % 2  # 参数rem为余数,即十进制数每次除2得到的余数s.push(rem)  # 通过push()方法将得到的余数添加到栈的顶端decNumber = decNumber // 2  # 输入的十进制整数除2,即十进制与2的整数商binString = ""  # 定义一个空字符串binString用于存放二进制数字while not s.isEmpty():  # 若栈不为空,则执行while循环一直下去binString = binString + str(s.pop())  # 通过pop()方法将栈顶的元素移除,通过str()转换为字符串类型并通过"+"拼接赋值给字符串binStringreturn binString  # 得到的二进制值print(DivideBy2(17))
print(DivideBy2(255))
print(DivideBy2(1024))
print(DivideBy2(2022))

进制转换

  根据十进制转二进制的程序代码可以进一步改进,首先该函数可以另外定义一个参数base,它表示相应的进制数(二进制、八进制、十六进制),另外创建一个字符串digits,由于有十进制转十六进制,所以该字符串的内容应该有ABCDEF,再加上数字0-9,即该字符串的内容为“0123456789ABCDEF”,它用于存储对应位置上的数字,当从栈中移除一个十进制余相应的进制数得到的余数时,就可以作为访问数字的下标,即对应的数字会被添加到结果中,最后再通过pop()方法将栈顶的元素移除,通过对字符串索引的方式依次索引移除的元素,并通过"+"拼接赋值给字符串newString。
  十进制转其他进制(二进制、八进制、十六进制)的程序完整代码及解析如下:

# 通过列表实现栈的操作(以列表尾部作为栈的顶端)
class Stack:def __init__(self):self.items = []  # 创建一个空栈,它不需要参数,且会返回一个空栈def isEmpty(self):return self.items == []  # 检查栈是否为空,它不需要参数,且会返回一个布尔值def push(self, item):self.items.append(item)  # 将一个元素添加到栈的顶端,它需要一个参数item,且无返回值def pop(self):return self.items.pop()  # 将栈顶的元素移除,它不需要参数,但会返回顶端的元素,且修改栈的内容def peek(self):return self.items[len(self.items) - 1]  # 返回栈顶端的元素,它不需要参数,不会修改栈的内容def size(self):return len(self.items)  # 返回栈中元素的数目,它不需要参数,且会返回一个整数# 创建一个有参函数BaseConverter(),参数为进制数和进制
def BaseConverter(decNumber, base):digits = "0123456789ABCDEF"  # 创建一个字符串digits,存储对应位置上的数字,当从栈中移除一个余数时,它可以被用作访问数字的下标,对应的数字会被添加到结果中s = Stack()while decNumber > 0:  # 若输入的进制数大于0,则执行while循环一直下去rem = decNumber % base  # 参数rem为余数,即进制数每次除相应的进制得到的余数s.push(rem)  # 通过push()方法将得到的余数添加到栈的顶端decNumber = decNumber // base  # 输入的进制数整数除相应的进制newString = ""  # 定义一个空字符串newString用于存放二进制数字while not s.isEmpty():  # 若栈不为空,则执行while循环一直下去newString = newString + digits[s.pop()]  # 通过pop()方法将栈顶的元素移除,通过对字符串索引的方式依次索引移除的元素,并通过"+"拼接赋值给字符串newStringreturn newString  # 得到的相应进制值#测试
print(BaseConverter(17, 2))
print(BaseConverter(255, 8))
print(BaseConverter(1024, 16))
print(BaseConverter(2022, 16))

二、队列

  队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
  队列是一种先进先出的(First In First Out)的线性表,简称 FIFO。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作!假设队列是q=(a1,a2,……,an),那么a1就是队头元素,而an是队尾元素。这样我们就可以删除时,总是从a1开始,而插入时,总是在队列最后。这也比较符合我们通常生活中的习惯,排在第一个的优先出列,最后来的当然排在队伍最后。

2.1 单向队列

  单向队列操作

  • enqueue(item) :往队列中添加一个item元素
  • dequeue(): 从队列头部删除一个元素
  • is_empty(): 判断一个队列是否为空
  • size(): 返回队列的大小

  同样地,这里也以 list 实现单向队列,当然你也可以使用链表实现。

class Queue(object):"""创建一个空的队列"""def __init__(self):"""用顺序表实现队列,Python 中 list 是顺序表队列:先进先出以列表尾部为队头(append:O(1),就要从列表头就是队列尾部(pop(0):O(n))以列表头部为队头(insert(0, item):O(n),就要从列表就尾是队列尾部(pop():O(1))所有哪种方法都可以"""# 定义一个列表,用来存储元素self.__list = []def enqueue(self, item):"""往队列中添加一个item元素"""self.__list.append(item)def dequeue(self):"""从队列头部删除一个元素"""return self.__list.pop(0)def is_empty(self):"""判断栈是否为空若 self.__list 为空,则为 False,[] 也是 False,两者为真,返回 True"""return self.__list == []def size(self):"""返回栈的元素个数"""return len(self.__list)if __name__ == '__main__':q = Queue()print(q.is_empty())q.enqueue(1)q.enqueue(2)q.enqueue(3)print(q.size())print(q.is_empty())print(q.dequeue())print(q.dequeue())print(q.dequeue())print(q.is_empty())

2.2 双端队列

  双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。
  双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。
操作

  • add_front(item): 从队头加入一个item元素
  • add_rear(item) :从队尾加入一个item元素
  • remove_front() :从队头删除一个item元素
  • remove_rear(): 从队尾删除一个item元素
  • is_empty() :判断双端队列是否为空
  • size() :返回队列的大小
class Deque(object):"""创建一个空的双端队列"""def __init__(self):"""用顺序表实现栈,Python 中 list 是顺序表栈:先进先出以列表尾部为队头(append:O(1),就要从列表头就是队列尾部(pop(0):O(n))以列表头部为队头(insert(0, item):O(n),就要从列表就尾是队列尾部(pop():O(1))所有哪种方法都可以"""# 定义一个列表,用来存储元素self.__list = []def add_front(self, item):"""从队头加入一个item元素"""self.__list.insert(0, item)     # O(n)# self.__list.append(item)      # O(1)def add_rear(self, item):"""从队尾加入一个item元素"""self.__list.append(item)        # O(1)# self.__list.insert(0, item)   # O(n)def remove_front(self):"""从队头删除一个item元素"""return self.__list.pop(0)       # O(n)# return self.__list.pop()      # O(1)def remove_rear(self):"""从队尾删除一个item元素"""return self.__list.pop()        # O(1)# return self.__list.pop(0)     # O(n)def is_empty(self):"""判断栈是否为空若 self.__list 为空,则为 False,[] 也是 False,两者为真,返回 True"""return self.__list == []def size(self):"""返回栈的元素个数"""return len(self.__list)if __name__ == '__main__':q = Deque()print(q.is_empty())q.add_front(1)      # 1q.add_front(2)      # 2 1q.add_rear(3)       # 2 1 3print(q.size())     # 3print(q.is_empty())     # Falseprint(q.remove_front())     # 2print(q.remove_front())     # 1print(q.remove_rear())      # 3print(q.is_empty())         # True

2.3 队列的应用

验证回文串

  给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
  说明:本题中,我们将空字符串定义为有效的回文串。
  示例 1:
  输入: “A man, a plan, a canal: Panama”
  输出: true
  解释:“amanaplanacanalpanama” 是回文串

  示例 2:
  输入: “race a car”
  输出: false
  解释:“raceacar” 不是回文串

双端队列求解

import collections
class Solution:def isPalindrome(self, s):#s=strs = s.lower()# 检测字母与数字字符s = [i for i in s if i.isalpha() or i.isnumeric()]# 构造双端队列deque = collections.deque()# 回文词入对for i in s:deque.appendleft(i)state = Truewhile len(deque) > 1 and state:left = deque.popleft()right = deque.pop()if left != right:state = Falsereturn state

滑动窗口最大值

  给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。
  示例:
  输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3
  输出: [3,3,5,5,6,7]

class Solution:# 方法二:双端队列def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:n = len(nums)q = collections.deque()# 先将k个元素生成单调递减队列for i in range(k):while q and nums[i] >nums[q[-1]]:q.pop()q.append(i)# 首个窗口的最大元素进列表res = [nums[q[0]]]# 再依次入单调递减队列for i in range(k,n):while q and nums[i]>nums[q[-1]]:q.pop()q.append(i)# 当队列长度超过k个,就弹出队首while q[0]<=i-k:q.popleft()res.append(nums[q[0]])return res

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】简述SQLの通用语法及4种基本语句介绍(DDL/DML/DQL/DCL)

前言 大家好吖&#xff0c;欢迎来到 YY 滴MySQL系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C Linux的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

【那些年错过的好书】——Web前端开发实战:HTML5+CSS3+JavaScript+Vue+Bootstrap(微视频版)

喜欢前端的同学&#xff0c;可以私信我加入学习群。 点击链接&#xff0c;获取资源&#xff1a; https://lizetoolbox.top:8080/qrCode_contact 或者 http://lizetoolbox.top/qrCode_contact 正文开始 前言推荐理由书籍介绍章节介绍实书示例写在最后 前言 陌生的朋友&…

kubectl 启用shell自动补全功能

官网手册参考&#xff1a;https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux/ 系统&#xff1a;centos7 补全脚本依赖于工具 bash-completion&#xff0c; 所以要先安装它&#xff08;可以用命令 type _init_completion 检查 bash-completion 是否已安装&a…

Python爬虫之爬取网页图片

当我们想要下载网页的图片时&#xff0c;发现网页的图片太多了&#xff0c;无从下手&#xff0c;那我们写一个脚本来爬取呗。 这次的脚本是专门针对某个外国网站使用的&#xff0c;因此仅供参考思路。 在测试的过程中&#xff0c;我发现网站使用了发爬虫机制&#xff0c;具体就…

阿里云服务器优惠价格61元一年,多配置报价,来看看

2024年阿里云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网aliyunfuwuqi.com整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新…

AI+软件工程:10倍提效!用ChatGPT编写系统功能文档

系统功能文档是一种描述软件系统功能和操作方式的文档。它让开发团队、测试人员、项目管理者、客户和最终用户对系统行为有清晰、全面的了解。 通过ChatGPT&#xff0c;我们能让编写系统功能文档的效率提升10倍以上。 用ChatGPT生成系统功能文档 我们以线上商城系统为例&#…

jetcache 2级缓存模式实现批量清除

需求 希望能够实现清理指定对象缓存的方法&#xff0c;例如缓存了User表&#xff0c;当User表巨大时&#xff0c;通过id全量去清理不现实&#xff0c;耗费资源也巨大。因此需要能够支持清理指定本地和远程缓存的批量方法。 分析 查看jetcache生成的cache接口&#xff0c;并没…

Java设计模式 | 抽象工厂模式

抽象工厂模式 工厂方法模式中考虑的是一类产品的生产&#xff0c;如幼儿园只培养小朋友&#xff0c;鞋厂只生产鞋子。这些工厂只生产同种类产品&#xff0c;同种类产品称为同等级产品&#xff0c;即工厂方法模式只考虑生产同等级的产品&#xff0c;但是在现实生活中许多工厂都…

有什么代理IP推荐?如何分辨代理IP类型?

跨境外贸是近几年来的热门行业&#xff0c;在众多助力跨境出海的工具中&#xff0c;代理IP也是强力的一大保障。不仅可以帮助企业拓展更大的地区市场&#xff0c;更加顺畅进行市场调查&#xff0c;更重要地&#xff0c;在TikTok、Amazon、Ebay、Instagram、Etsy等等跨境平台业务…

介绍一下Redis的集群模式?

Redis有三种主要的集群模式&#xff0c;用于在分布式环境中实现高可用性和数据复制。这些集群模式分别是&#xff1a;主从复制&#xff08;Master-Slave Replication&#xff09;、哨兵模式&#xff08;Sentinel&#xff09;和Redis Cluster模式。 一、问题解析 主从模式 主从…

学点儿数据库_Day11_多表、等值连接、内连接、模糊查找

1 多表 学生表、班级表、课程表、班级课程表 关系型数据库&#xff1a; MySql、SqlServer、Oracle 相同的数据出现多次绝不是一件好事&#xff0c;这是关系数据库设计的基础。关系表的设计就是要把信息分解成多个表&#xff0c;一个数据一个表&#xff0c;各表通过某些共同的…

OpenCV模块熟悉:点云处理相关

1. 显示--VIZ 曾经基于PCL 做过不少点云相关的开发&#xff0c;采样VTK进行有点云显示。后来基于OpenCV做了不少三维重建工作&#xff0c;总是将点云保存下来&#xff0c;然后借助CloudCompare等查看结果。如果能够将VIZ编译进来&#xff0c;预计会提升开发速度。 …

86.分隔链表

给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1&#xff1a; ​ 输入&#xff1a;head [1,4,3,2,5,2], x 3 输出&…

unity学习(70)——编译游戏发生错误2

1.全屏问题其实无所谓&#xff0c;windows用tab可以切出来的。 2.现在主要问题是服务器try了以后虽然不崩溃了&#xff0c;但不再显示2个实例对象了&#xff0c;unity和exe此时都只能看到一个实例对象 2.1把之前报错位置的try-catch先注释掉 2.2 unity中此时登录666账号&…

Git工具的详细使用

一、环境说明 [rootgit ~]# getenforce Disabled [rootgit ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (d…

Avalonia笔记2 -数据集合类控件

学习笔记&#xff1a; 1. DataGrid 笔记1中已经记录&#xff1b; 2. ItemsControl 属性&#xff1a; ItemsSource&#xff1a;数据源 ItemsControl.ItemTemplate&#xff1a;单项数据模板&#xff0c;内部使用<DataTemplate> 示例&#xff1a; <ItemsContr…

docker关闭全部运行容器命令是什么?

环境&#xff1a; docker v22.1 问题描述&#xff1a; docker关闭全部运行容器命令是什么&#xff1f; 解决方案&#xff1a; 要关闭所有正在运行的Docker容器&#xff0c;可以使用如下命令&#xff1a; docker stop $(docker ps -a -q)这条命令首先执行 docker ps -a -q…

35.HarmonyOS App(ArkUI)使用父组件@Builder装饰的方法初始化子组件@BuilderParam报错

HarmonyOS App(ArkUI)使用父组件Builder装饰的方法初始化子组件BuilderParam报错 Type void is not assignable to type () > void. <tsCheck> 去掉括号()就可以了 装饰器&#xff1a; 用于装饰类、结构、方法以及变量&#xff0c;并赋予其特殊的含义。如上述示例中En…

使用LangChain LCEL生成RAG应用、使用LangChain TruLens对抗RAG幻觉

# 导入LangChain的库 from langchain import *# 加载数据源 loader WebBaseLoader() doc loader.load("https://xxx.html")# 分割文档对象 splitter RecursiveCharacterTextSplitter(max_length512) docs splitter.split(doc)# 转换文档对象为嵌入&#xff0c;并…

[ Linux ] git工具的基本使用(仓库的构建,提交)

1.安装git yum install -y git 2.打开Gitee&#xff0c;创建你的远程仓库&#xff0c;根据提示初始化本地仓库&#xff08;这里以我的仓库为例&#xff09; 新建好仓库之后跟着网页的提示初始化便可以了 3.add、commit、push三板斧 git add . //add仓库新增&#xff08;变…