队列与广度优先搜索及其相关题目

  • 1. 队列基础知识
    • 1.1 队列简介
    • 1.2 队列的顺序存储与链式存储
      • 1.2.1 队列的基本操作
      • 1.2.2 队列的顺序实现(List)
      • 1.2.3 循环队列的提出及其实现方法
      • 1.2.4 队列的链式存储实现
    • 1.3 队列的应用
  • 2. 广度优先搜索
    • 2.1 简介
    • 2.2 基于队列的广度优先搜索
  • 3. 相关题目
    • 3.1 队列相关题目
      • 225.用队列实现栈
    • 3.2 BFS相关题目
      • 463.岛屿的周长
      • 752.打开转盘锁

1. 队列基础知识

1.1 队列简介

  1. 定义
    队列(Queue):一种线性表数据结构,是一种只允许在表的一端进行插入操作,而在表的另一端进行删除操作的线性表
    队尾(rear):队列中允许插入的一端
    队首(front):队列中允许删除的一端
    空队:队列中没有任何元素时

  2. 基本操作

    1. 插入,也称为入队
    2. 删除,也称为出队
      在这里插入图片描述
      与栈的 先进后出 不同,队列是一种 先进先出(First In First Out)的线性表,简称为 FIFO 结构

    定义的解释:

    1. 线性表:队列首先是一个线性表,队列中元素具有前驱后继的线性关系。队列中元素按照次序依次入队
    2. 先进先出:根据队列的定义,最先进入队列的元素在队头,最后进入队列的元素在队尾。每次删除的总是队列中的队头元素,即最先进入队列的元素

1.2 队列的顺序存储与链式存储

与线性表相同,队列也有着一下的两种存储方式

  1. 顺序存储
    利用一组地址连续的存储单元依次存放队列中从队头到队尾的元素,同时使用指针 front 指向队头元素在队列中的位置,使用指针 rear 指示队尾元素在队列中的位置
  2. 链式存储
    利用单链表的方式来实现队列。队列中元素按照插入顺序依次插入到链表的第一个节点之后,并使用队头指针 front 指向链表头节点位置,也就是队头元素,rear 指向链表尾部位置,也就是队尾元素

注意:根据算法实现方式的不同,front 和 rear 的指向位置并不完全固定。有时候算法设计上的方便以及代码简洁,也会使 front 指向队头元素所在位置的前一个位置。rear 也可能指向队尾元素在队列位置的下一个位置

下面,我们先看一下队列的基本操作,会让我们对其实现有更深的理解

1.2.1 队列的基本操作

  1. 初始化空队列:创建一个空队列,定义队列的大小 size,以及队头元素指针 front,队尾指针 rear
  2. 判断队列是否为空:当队列为空时,返回 True。当队列不为空时,返回 False。一般只用于队列中删除操作和获取队头元素操作中
  3. 判断队列是否已满:当队列已满时,返回 True,当队列未满时,返回 False。一般只用于顺序队列中插入元素操作中
  4. 插入元素(入队):相当于在线性表最后元素后面插入一个新的数据元素。并改变队列顶指针 top 的指向位置
  5. 删除元素(出队):相当于在线性表最后元素后面删除最后一个数据元素。并改变队列顶指针 top 的指向位置
  6. 获取队列队头元素:相当于获取线性表中最后一个数据元素。与插入元素、删除元素不同的是,该操作并不改变队列顶指针 top 的指向位置

1.2.2 队列的顺序实现(List)

  1. 基本描述:在这里插入图片描述
    为了算法设计上的方便以及算法本身的简单,我们约定:队头指针 self.front 指向队头元素所在位置的前一个位置,而队尾指针 self.rear 指向队尾元素所在位置
    1. 初始化时:创建一个空队列 self.queue,定义队列大小 self.size。令队头指针 self.front 和队尾指针 self.rear 都指向 -1。即 self.front = self.rear = -1
    2. 判断队列为空:判断队列为空:根据 self.front 和 self.rear 的指向位置关系进行判断。如果对头指针 self.front 和队尾指针 self.rear 相等,则说明队列为空
    3. 判断队列为满:如果 self.rear 指向队列最后一个位置,即 self.rear == self.size - 1,则说明队列已满
    4. 获取队头元素:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 self.front 指向队头元素所在位置的前一个位置,所以队头元素在 self.front 后面一个位置上,返回 self.queue[self.front + 1]
    5. 获取队尾元素:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 self.rear 指向队尾元素所在位置,所以直接返回 self.queue[self.rear]
    6. 入队操作:先判断队列是否已满,已满直接抛出异常。如果不满,则将队尾指针 self.rear 向右移动一位,并进行赋值操作。此时 self.rear 指向队尾元素
    7. 出队操作:先判断队列是否为空,为空直接抛出异常。如果不为空,则将队头指针 self.front 指向元素赋值为 None,并将 self.front 向右移动一位
  2. 代码实现:
class Queue:# 初始化空队列def __init__(self. size = 100):self.size = sizeself.queue = [None for _ in range(size)]self.front = -1self.rear = -1# 判断队列是否为空def is_empty(self):return self.front == self.rear# 判断队列是否已满def is_full(self):return self.rear + 1 == self.size# 入队操作def enqueue(self, val):if self.is_full():raise Exception('Queue is full')else:self.rear += 1self.queue[self.rear] = value# 出队操作def dequeue(self):if self.is_empty():raise Exception('Queue is empty')else:self.front += 1return self.queue[self.front]# 获取队首元素def front_value(self):if self.is_empty():raise Exception('Queue is empty')else:return self.queue[self.front + 1]# 获取队尾元素def rear_value(self):if self.is_empty():raise Exception('Queue is empty')else:return self.queue[self.rear]

1.2.3 循环队列的提出及其实现方法

由于出队操作总是删除当前的队头元素,将 self.front 进行右移,而插入操作又总是在队尾进行。经过不断的出队、入队操作,队列的变化就像是使队列整体向右移动。当队尾指针 self.rear == self.size - 1 时,此时再进行入队操作就又抛出队列已满的异常。而之前因为出队操作而产生空余位置也没有利用上,这就造成了假溢出问题。

而为了解决这个问题,有两种做法:

  1. 每一次删除队头元素之后,就将整个队列往前移动 1 个位置。其代码如下所示

    # 出队操作
    def dequeue(self):if self.is_empty():raise Exception('Queue is empty')else:value = self.queue[0]for i in range(self.rear):self.queue[i] = self.queue[i + 1]return value
    

    这种情况下,队头指针似乎用不到了。因为队头指针总是在队列的第 0 个位置。但是因为删除操作涉及到整个队列元素的移动,所以每次删除操作的时间复杂度就从O(1)变为了O(n)。这种方式不太可取

  2. 将队列想象成为头尾相连的循环表,利用数学中的求模运算,使得空间得以重复利用,这样就解决了问题

    这样在进行插入操作时,如果队列的第 self.size - 1 个位置被占用之后,只要队列前面还有可用空间,新的元素加入队列时就可以从第 0 个位置开始继续插入

    我们约定:self.size 为循环队列的最大元素个数。队头指针 self.front 指向队头元素所在位置的前一个位置,而队尾指针 self.rear 指向队尾元素所在位置。则

    1. 入队时,队尾指针循环前进 1 个位置,即 self.rear = (self.rear + 1) % self.size
    2. 出队时,队头指针循环前进 1 个位置,即 self.front = (self.front + 1) % self.size

    注意:循环队列在一开始初始化,队列为空时,self.front 等于 self.rear。而当充满队列后,self.front 还是等于 self.rear。这种情况下就无法判断「队列为空」还是「队列为满」了

    解决方式为:

    1. 增加表示队列中元素个数的变量 self.count,用来以区分队列已满还是队列为空。在入队、出队过程中不断更新元素个数 self.count 的值
      1. 队列已满条件为:队列中元素个数等于队列整体容量,即 self.count == self.size
      2. 队空为空条件为:队列中元素个数等于 0,即 self.count == 0
    2. 增加标记变量 self.tag,用来以区分队列已满还是队列为空
      1. 队列已满条件为:self.tag == 1 的情况下,因插入导致 self.front == self.rear
      2. 队列为空条件为:在 self.tag == 0 的情况下,因删除导致 self.front == self.rear
    3. 特意空出来一个位置用于区分队列已满还是队列为空。入队时少用一个队列单元,即约定以「队头指针在队尾指针的下一位置」作为队满的标志
      1. 队列已满条件为:队头指针在队尾指针的下一位置,即 (self.rear + 1) % self.size == self.front
      2. 队列为空条件为:队头指针等于队尾指针,即 self.front == self.rear

整体的代码实现:

class Queue:# 初始化空队列def __init__(self, size=100):self.size = size + 1self.queue = [None for _ in range(size + 1)]self.front = 0self.rear = 0# 判断队列是否为空def is_empty(self):return self.front == self.rear# 判断队列是否已满def is_full(self):return (self.rear + 1) % self.size == self.front# 入队操作def enqueue(self, value):if self.is_full():raise Exception('Queue is full')else:self.rear = (self.rear + 1) % self.sizeself.queue[self.rear] = value# 出队操作def dequeue(self):if self.is_empty():raise Exception('Queue is empty')else:self.queue[self.front] = Noneself.front = (self.front + 1) % self.sizereturn self.queue[self.front]# 获取队头元素def front_value(self):if self.is_empty():raise Exception('Queue is empty')else:value = self.queue[(self.front + 1) % self.size]return value# 获取队尾元素def rear_value(self):if self.is_empty():raise Exception('Queue is empty')else:value = self.queue[self.rear]return value

1.2.4 队列的链式存储实现

对于在使用过程中数据元素变动较大,或者说频繁进行插入和删除操作的数据结构来说,采用链式存储结构比顺序存储结构更加合适
所以我们可以采用链式存储结构来实现队列。我们用一个线性链表来表示队列,队列中的每一个元素对应链表中的一个链节点。然后把线性链表的第 1 个节点定义为队头指针 front,在链表最后的链节点建立指针 rear 作为队尾指针。并且限定只能在链表队头进行删除操作,在链表队尾进行插入操作,这样整个线性链表就构成了一个队列

  1. 基本描述:
    在这里插入图片描述
    我们约定:队头指针 self.front 指向队头元素所在位置的前一个位置,而队尾指针 self.rear 指向队尾元素所在位置。
    1. 初始化时:建立一个链表头节点 self.head,令队头指针 self.front 和队尾指针 self.rear 都指向 head。即 self.front = self.rear = head
    2. 判断队列为空:根据 self.front 和 self.rear 的指向位置进行判断。根据约定,如果对头指针 self.front 等于队尾指针 self.rear,则说明队列为空。
    3. 获取队头元素:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 self.front 指向队头元素所在位置的前一个位置,所以队头元素在 self.front 后一个位置上,返回 self.front.next.value
    4. 获取队尾元素:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 self.rear 指向队尾元素所在位置,所以直接返回 self.rear.value
    5. 入队操作:创建值为 value 的链表节点,插入到链表末尾,并令队尾指针 self.rear 沿着链表移动 1 位到链表末尾。此时 self.rear 指向队尾元素
    6. 出队操作:先判断队列是否为空,为空直接抛出异常。如果不为空,则获取队头指针 self.front 下一个位置节点上的值,并将 self.front 沿着链表移动 1 位。如果 self.front 下一个位置是 self.rear,则说明队列为空,此时,将 self.rear 赋值为 self.front,令其相等
  2. 代码实现
class Node:def __init__(self, value):self.value = valueself.next = Noneclass Queue:# 初始化空队列def __init__(self):head = Node(0)self.front = headself.rear = head# 判断队列是否为空def is_empty(self):return self.front == self.rear# 入队操作def enqueue(self, value):node = Node(value)self.rear.next = nodeself.rear = node# 出队操作def dequeue(self):if self.is_empty():raise Exception('Queue is empty')else:node = self.front.nextself.front.next = node.nextif self.rear == node:self.rear = self.frontvalue = node.valuedel nodereturn value# 获取队头元素def front_value(self):if self.is_empty():raise Exception('Queue is empty')else:return self.front.next.value# 获取队尾元素def rear_value(self):if self.is_empty():raise Exception('Queue is empty')else:return self.rear.value

1.3 队列的应用

  1. 解决计算机的主机与外部设备之间速度不匹配的问题
    比如解决主机与打印机之间速度不匹配问题。主机输出数据给计算机打印,输出数据的速度比打印数据的速度要快很多,如果直接把数据送给打印机进行打印,由于速度不匹配,显然行不通。为此,可以设置一个打印数据缓存队列,将要打印的数据依次写入缓存队列中。然后打印机从缓冲区中按照先进先出的原则依次取出数据并且打印。这样即保证了打印数据的正确,又提高了主机的效率。
  2. 解决由于多用户引起的系统资源竞争的问题
    1. 比如说一个带有多终端的计算机系统,当有多个用户需要各自运行各自的程序时,就分别通过终端向操作系统提出占用 CPU 的请求。操作系统通常按照每个请求在时间上的先后顺序将它们排成一个队列,每次把 CPU 分配给队头请求的用户使用;当相应的程序运行结束或用完规定的时间间隔之后,将其退出队列,再把 CPU 分配给新的队头请求的用户使用。这样既能满足多用户的请求,又能使 CPU 正常运行
    2. 再比如 Linux 中的环形缓存、高性能队列 Disruptor,都用到了循环并发队列。iOS 多线程中的 GCD、NSOperationQueue 都用到了队列结构

2. 广度优先搜索

2.1 简介

广度优先搜索算法(Breadth First Search):简称为 BFS,又译作宽度优先搜索 / 横向优先搜索。是一种用于遍历或搜索树或图的算法。该算法从根节点开始,沿着树的宽度遍历树或图的节点。如果所有节点均被访问,则算法中止

广度优先遍历类似于树的层次遍历过程。呈现出一层一层向外扩张的特点。先看到的节点先访问,后看到的节点后访问。遍历到的节点顺序符合先进先出的特点,所以广度优先搜索可以通过队列来实现

2.2 基于队列的广度优先搜索

  1. 步骤
    1. graph 为存储无向图的字典变量,start 为开始节点
    2. 然后定义 visited 为标记访问节点的 set 集合变量。定义 q 为存放节点的队列
    3. 首先将起始节点放入队列 q中,即 q.put(start)。并将其标记为访问,即 visited.add(start)
    4. 从队列中取出第一个节点 node_u。访问节点 node_u,并对节点进行相关操作(看具体题目要求)
    5. 遍历与节点 node_u 相连并构成边的节点 node_v
      如果 node_v 没有被访问过,则将 node_v 节点放入队列中,并标记访问,即 q.append(node_v),visited.add(node_v)。
    6. 重复步骤 4 ~ 5,直到 q 为空
  2. 代码实现
import collectionsdef bfs(graph, strat):visited = set(start)q = collections.deque([start])while q:node_u = q.popleft()print(node_u)for node_v in graph[node_u]:if node_v not in visited:visited.add(node_v)q.append(node_v)

3. 相关题目

3.1 队列相关题目

225.用队列实现栈

  1. 思路:
    队列是先入先出的线性表,而栈是先入后出的线性表,所以,我们可以使用两个队列来模拟先入后出的栈
    建立两个队列queue1和queue2,入栈时先将元素置入queue2,之后将queue1中的元素添加到queue2中,再交换queue1与queue2即可。循环执行
  2. 代码实现
class MyStack:def __init__(self):self.queue1 = collections.deque()self.queue2 = collections.deque()def push(self, x: int) -> None:self.queue2.append(x)while self.queue1:self.queue2.append(self.queue1.popleft())self.queue1, self.queue2 = self.queue2, self.queue1def pop(self) -> int:return self.queue1.popleft()def top(self) -> int:return self.queue1[0]def empty(self) -> bool:return not self.queue1

3.2 BFS相关题目

463.岛屿的周长

  1. 思路

    1. 迭代:
      遍历网格中的所有点,如果遇到一个网格的值为1,ans + 4,并查看四条边是否与另一个1相邻,如果相邻,减一即可
    2. 广度优先搜索:
      定义一个BFS函数来实现寻找陆地周长的功能。
      步骤:
      1. 遍历网格,找到一个值为1的位置作为BFS的起始位置
      2. 定义结果变量ans和用于BFS的队列q
      3. 取出列表中的元素,并将其置为2以避免重复访问
      4. 遍历四个方向,如果靠近边界或者靠近水时+1
      5. 如果值为1,将其置为2,同时加入队列
  2. 代码实现

    class Solution:
    def islandPerimeter(self, grid: List[List[int]]) -> int:r, c = len(grid), len(grid[0])ans = 0for i in range(r):for j in range(c):if grid[i][j] == 1:ans += 4if i - 1 >= 0 and grid[i - 1][j] == 1:ans -= 1if i + 1 < r and grid[i + 1][j] == 1:ans -= 1if j - 1 >= 0 and grid[i][j - 1] == 1:ans -= 1if j + 1 < c and grid[i][j + 1] == 1:ans -= 1return ans
    
    class Solution:
    def islandPerimeter(self, grid: List[List[int]]) -> int:def bfs(grid, i, j):directs = [(0, 1), (0, -1), (1, 0), (-1, 0)]q = collections.deque([(i, j)])ans = 0while q:row, col = q.popleft()grid[row][col] = 2for direct in directs:new_row = row + direct[0]new_col = col + direct[1]if new_row < 0 or new_row >= r or new_col < 0 or new_col >= c or grid[new_row][new_col] == 0:ans += 1elif grid[new_row][new_col] == 1:grid[new_row][new_col] = 2q.append([new_row, new_col])return ansr, c = len(grid), len(grid[0])for i in range(r):for j in range(c):if grid[i][j] == 1:return bfs(grid, i, j)
    

752.打开转盘锁

  1. 思路:
    将所有可能出现的转盘锁的情况视为一个图,每种情况都是一个节点,可以通过一步相互转化的节点之间连接。所以,我们找的是从起始节点到目标节点的最少步数,也即最短路径,可以使用广度优先搜索。
    将0000作为初始状态开始,在搜索过程中不停的判断是否在dead中或者已经搜索过。
  2. 代码实现:
class Solution:def openLock(self, deadends: List[str], target: str) -> int:if target == '0000':return 0dead = set(deadends)if '0000' in dead:return -1def num_prev(x):return '9' if x == '0' else str(int(x) - 1)def num_succ(x):return '0' if x == '9' else str(int(x) + 1)# 枚举 status 通过一次旋转得到的数字def get(s):s = list(s)for i in range(4):num = s[i]s[i] = num_prev(num)yield ''.join(s)s[i] = num_succ(num)yield ''.join(s)s[i] = numq = deque([('0000', 0)])seen = {'0000'}while q:statue, step = q.popleft()for next_status in get(statue):if next_status not in seen and next_status not in dead:if next_status == target:return step + 1q.append((next_status, step + 1))seen.add(next_status)        return -1
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 引入Security与jwt

    首先我们导入security包&#xff0c;因为我们前后端交互用户凭证用的是JWT&#xff0c;所以我们也导入jwt的相关包&#xff0c;然后因为验证码的存储需要用到redis&#xff0c;所以引入redis。最后为了一些工具类&#xff0c;我们引入hutool。 pom.xml <!-- springboot sec…...

    2024/4/24 19:37:42
  2. vue实现todolist小案例~

    效果如图&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport"…...

    2024/4/14 8:49:19
  3. LC 打家劫舍

    动态规划&#xff1a;dp[][0],dp[][1],0表示没做这件事&#xff0c;1表示做了。 dp[i][0]表示第i1家&#xff08;i从0开始&#xff09;没偷&#xff0c;那么第i家偷没偷都可以&#xff0c;所以dp[i][0] Max(dp[i-1][0],dp[i-1][1])。 dp[i][1]表示第i1家偷了&#xff0c;所以…...

    2024/4/14 8:49:04
  4. if语句_continue_类

    if语句 在Python中检查是否相等时区分大小写&#xff0c;如果想要忽略大小写的影响的话&#xff0c;可以将变量的值转换为小写进行比较。 continue::如果执行continue语句&#xff0c;让Python忽略余下的代码&#xff0c;并返回到循环的开头。如果当前条件不满足&#xff0c;…...

    2024/4/23 15:42:01
  5. 都啥年头了,还问这种面试题

    前言 今天我们来看两道经典的面试题。 面试题一&#xff1a; StringBuffer与StringBuilder的区别 这个可以说是很古老的面试题了。 先看一张继承关系图&#xff1a; 对比 StringBuilderStringBufferString是否线程安全否是操作时是否会创建新对象否否是是否可变可变可变不可…...

    2024/4/15 9:11:23
  6. 【脑电信号】小波变换DWT脑电信号ECG去噪matlab源码

    1 简介 大脑是由亿万个神经元组成的复杂系统&#xff0c;负责身体的各个功能的协调运作&#xff0c;通过大脑皮层上电极记录下的大脑细胞群的电位活动称为脑电信号。通过对脑电信号进行研究可以获得丰富的心理及生理的疾病信息&#xff0c;所以脑电信号的分析及去噪算法的研究…...

    2024/4/18 7:55:48
  7. jenkins docker 安装

    docker pull jenkins/jenkins:lts docker run \ --name jenkins \ --restart always \ -u root \ -p 18904:8080 \ -p 18905:50000 \ -v /home/app_user14/data/jenkins:/var/jenkins_home \ jenkins/jenkins:lts 中间会有密码...

    2024/4/14 8:49:04
  8. Java获取当前项目路径

    System.getProperty("user.dir")...

    2024/4/15 16:06:44
  9. 英语翻译六

    Charging | JXNUOJ Xxy是宇宙之王。为了抵抗入侵&#xff0c;他下令建造许多太空战舰。现在&#xff0c;他想给他的宇宙飞船充电 &#xff0c;他有N艘宇宙飞船。N艘船从1到N编号&#xff0c;并按顺序排列。xxy有M个充电计划。第i个平面由两个正整数hi ri描述。在这个计划中&am…...

    2024/4/7 15:52:12
  10. 八大排序——希尔排序

    希尔排序是把记录按下标的一定增量分组&#xff0c;对每组使用直接插入排序算法排序&#xff1b;随着增量主键递减&#xff0c;每组包含的关键词也来越多&#xff0c;当增量减至1时&#xff0c;整个文件恰被分成一组&#xff0c;算法终止。 过程图如下&#xff1a; 希尔排序介…...

    2024/4/20 15:37:11
  11. vscode 常用记录

    一、快捷键在哪设置 ctrl k ctrl s 打开快捷键一览表。 二、python无法函数提示和函数跳转 需要设置语言服务器&#xff0c;ctrlshiftp 打开配置文件&#xff0c;添加 "python.languageServer": "Pylance"...

    2024/4/19 13:04:43
  12. 物联网工程课程设计论文

    基于物联网的风力发电监控管理系统 应用研究 Research on Application of Wind Power Monitoring and Management System Based on Internet of Things 摘要 随着我国物联网技术的发展与进步&#xff0c;物联网技术同各种行业的实践结合也逐步发展起来。在经济飞速发展的今天&…...

    2024/5/7 1:49:25
  13. [OC学习笔记]协议与分类

    OC语言有一个特殊的属性叫“协议”&#xff08;protocol&#xff09;。它与Java的“接口”&#xff08;interface&#xff09;类似。OC不支持多重继承&#xff0c;因而我们把某个类应该实现的一系列方法定义在协议里面。协议最为常见的是用途是实现委托模式&#xff0c;不过也有…...

    2024/4/14 8:49:45
  14. 数字电子技术

    数电数码和码制几种常用的数制不同数制之间的转换二进制算数运算几种常用的编码逻辑代数基础逻辑代数中的三种基本运算逻辑代数的基本公式和常用公式逻辑代数的基本定理逻辑函数及其表示方法逻辑函数的化简方法具有无关项的逻辑函数及其化简多输出逻辑函数的化简逻辑函数形式的…...

    2024/4/16 23:33:05
  15. 【思特奇杯·云上蓝桥-算法集训营】第3周 python

    第一题&#xff1a;509. 斐波那契数 斐波那契数&#xff0c;通常用 F(n) 表示&#xff0c;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)…...

    2024/4/14 8:49:45
  16. 为什么除数不能为0?

    为什么除数不能为0&#xff1f; 笔记来源&#xff1a;Dividing by zero? Multiplication is repeated adding 35555533333335555\\ 5333333 355555333333 Multiplication is repeated subtracting 要将被除数减到0为止 1553【15−5−5−5⏟3个0&#xff0c;需要3个5】1535【1…...

    2024/4/18 16:24:30
  17. js - demo / 用户抽奖

    setTimeout 定时器 是只循环一次 即 当我们点击按钮&#xff0c;等500毫秒之后 再运行此步骤&#xff1b; 节流 规定一个单位时间&#xff0c;在这个单位时间内&#xff0c;只能有一次触发事件的回调函数执行&#xff0c;如果在同一个单位时间内某事件被触发多次&#xff0c;只…...

    2024/4/14 8:50:10
  18. Windows Server Core 2022 (一)安装

    ----------------------------------------------------------------------------------------------------------------------- 之前打通了IPv6&#xff0c;于是想在老笔记本上起个“简易服务器”&#xff0c;先跑IIS&#xff0c;后续服务测试后再说。 考虑到尽可能把性能给…...

    2024/4/16 14:37:41
  19. Go语言的数组、切片和映射

    使用数组 声明数组并给它赋值的程序清单如下&#xff1a; package mainimport("fmt" ) func main(){var cheeses [2]stringcheeses[0]"Mariolles"cheeses[1]"poisses de Bourgogne"fmt.Println(cheeses[0])fmt.Println(cheeses[1])fmt.Println…...

    2024/4/22 11:21:00
  20. ip_frag_next没看懂的操作

    struct sk_buff *ip_frag_next(struct sk_buff *skb, struct ip_frag_state *state) {/* len初始为剩余长度 */unsigned int len state->left; ---|struct sk_buff *skb2; |struct iphdr *iph; |&#xff1f;|len state->left;-------…...

    2024/4/14 8:50:00

最新文章

  1. (数据结构)快速了解时间复杂度和空间复杂度

    一、时间复杂度 当计算时间复杂度时&#xff0c;通常需要考虑算法中的循环次数、递归深度等因素。以下是一些常见时间复杂度的示例&#xff1a; O(1)&#xff1a;常数时间复杂度&#xff0c;表示算法的执行时间是固定的&#xff0c;与输入规模无关&#xff0c;比如直接访问数组…...

    2024/5/7 23:00:42
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. PostCss:详尽指南之安装和使用

    引言 在现代前端开发中&#xff0c;CSS预处理器如Sass、Less等已经成为提升开发效率、增强代码可维护性的重要工具。然而&#xff0c;随着Web技术的发展&#xff0c;CSS的功能也在不断扩展&#xff0c;一些新的CSS语法&#xff08;如变量、自定义属性、CSS Grid等&#xff09;以…...

    2024/5/7 14:57:33
  4. 蓝桥杯 - 受伤的皇后

    解题思路&#xff1a; 递归 回溯&#xff08;n皇后问题的变种&#xff09; 在 N 皇后问题的解决方案中&#xff0c;我们是从棋盘的顶部向底部逐行放置皇后的&#xff0c;这意味着在任何给定时间&#xff0c;所有未来的行&#xff08;即当前行之下的所有行&#xff09;都还没…...

    2024/5/6 20:35:46
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/7 5:50:09
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57