左倾红黑树

  • 前提了解
  • 红黑树和平衡多叉树的对应关系
  • 左倾红黑树
  • 基于自顶向下2-3-4树的左倾红黑树
  • 基于2-3树的左倾红黑树
  • 重要代码
    • 左右旋转变色
    • 翻转变色
  • 向2-3左倾红黑树插入
  • 向2-3-4左倾红黑树插入的额外情况
  • 插入代码
  • 2-3左倾红黑树删除最小值的情况
  • 2-3-4左倾红黑树删除最小值的额外情况
  • 2-3左倾红黑树删除最大值的情况
  • 2-3-4左倾红黑树删除最大值的额外情况
  • 2-3和2-3-4左倾红黑树删除一般情况
  • 2-3左倾红黑树完整代码
  • 2-3-4左倾红黑树完整代码

前提了解

  • B树、2-3树、2-3-4树
  • 二叉搜索树、平衡二叉树
  • Robert Sedgewick原论文
  • Robert Sedgewick论文翻译和解释

红黑树和平衡多叉树的对应关系

  • 黑链接相当于2-节点
  • 一边红链接相当于3-节点
  • 两边红链接相当于4-节点
  • 红链接与红节点是等效的(链接是节点的内部属性,表示父节点对其的指向)

左倾红黑树

根据Robert Sedgewick原论文的定义:左倾红黑树指3-节点向左倾斜的红黑树,其具有2种形式

  • 基于自顶向下2-3-4树的左倾红黑树
  • 基于2-3树的左倾红黑树

具有以下特性

  • 不能出现向右倾斜的红链接
  • 从根到叶节点不包含两条连续的红色链接
  • 从根到叶节点的每条路径拥有相同的黑色链接数量

基于自顶向下2-3-4树的左倾红黑树

向左倾斜的要求决定了红黑树和 2-3-4 树之间一对一的对应关系,从而减少了要考虑的情况
在这里插入图片描述
自底向上:指插入4-叶子节点后开始分裂,并将中间值传给父节点,如果其父节点也是4-节点,继续向上分裂,直到到达根节点,如果根节点也是4-节点,分裂后树的高度+1,如下图
在这里插入图片描述
自顶向下:从根节点到插入所在的叶子节点路径上,遇到4-节点就将其分裂,这样确保了最后到达的叶子节点必然是2-或者3-节点,搜索路径上不存在4-节点,如下图
在这里插入图片描述

基于2-3树的左倾红黑树

向左倾斜的要求决定了红黑树和 2-3 树之间一对一的对应关系,从而减少了要考虑的情况
在这里插入图片描述

重要代码

下面代码图片来源于原论文

左右旋转变色

出现向右倾斜的红链接或两个连续的红链接时需要旋转变色
在这里插入图片描述 在这里插入图片描述

翻转变色

左右都是红链接时,需要翻转变色,若翻转到根节点,则黑链高度增加

  • 对于2-3左倾红黑树来说,相当于分裂生成的4-节点
  • 对于2-3-4左倾红黑树来说,相当于分裂遇到的4-节点
    在这里插入图片描述

向2-3左倾红黑树插入

向2-节点插入,插入左边直接插入,插入右边需左旋(因为不能出现向右倾斜的红链接),相当于将2-节点变成了3-节点
在这里插入图片描述
向3-节点插入,插入左中位置,需要旋转调整(因为不能两条连续的红色链接),此时左右两边都有红链接,已无法通过旋转调整,相当于将3-节点变成了4-节点,然后通过翻转变色分裂生成的4-节点
在这里插入图片描述
可以看到是先旋转变色调整,再判断是否需要翻转变色

向2-3-4左倾红黑树插入的额外情况

向2节点插入同2-3树,但向3-节点插入,3-节点变成4-节点,即两边红链
在这里插入图片描述
如果出现4-节点,下次插入搜索时将拆分4-节点(就不会出现向4-节点添加元素的情况),当其父节点为2-节点时,根据自顶向下的规则,分裂遇到的4-节点,传递中间值给父节点,父节点变成3-节点,问题转为插入2-节点,即先翻转变色再判断是否需要旋转变色
在这里插入图片描述
如下同理,只不过4-节点的父节点是3-节点的情况
在这里插入图片描述

插入代码

根据上面对2-3左倾红黑树和2-3-4左倾红黑树的分析,作者给出了插入的代码
在这里插入图片描述
将两边红链接翻转的那行代码放到前面是自顶向下的2-3-4左倾红黑树,放到后面是2-3左倾红黑树

2-3左倾红黑树删除最小值的情况

在2-3树的删除讨论中,只有当待删除元素为3-叶节点或待删除元素的父节点为3-节点时不影响树平衡

  • 前者直接删除,如下图
    在这里插入图片描述
  • 后者将3-节点重新分配或合并成2-节点,如下图
    在这里插入图片描述
    对应到红黑树,删除要保持平衡,需要保证待删除元素节点为红链接或其父节点为红链接其对立面是待删除元素节点和父节点都是黑链接,为了消除这个情况,原论文采用了一个非常极端的方法,将左搜索路径的连续黑链接都翻转变色,即代码中的 if (!isRed(h.left) && !isRed(h.left.left))及flipsColors()
    在这里插入图片描述
    flipsColors()的操作会导致:
  • 引入连续的左左红色链接(如插入60-50-70-40-55-80-90-30,删除30,会导致50和40红)
  • 引入左右红色链接(如插入60-50-70-40-55-80-90,删除40,会导致50和70红)
  • 引入单右红色链接(如插入60-50-70,删除50,会导致70红)
  • 引入左右红色链接导致的连续右左红色链接(如插入60-50-70-40-55-80-90-53,删除40,会导致55和53红)

前三种情况刚好对应2-3树插入时的修正代码,即fixup(),可在递归回调时修正

最后一种情况遇到时应该立马修正,即代码中的 isRed(h.right.left),原论文中给了示例,如下图
在这里插入图片描述

2-3-4左倾红黑树删除最小值的额外情况

上面的说法对于2-3-4树更广义的描述应该是不能出现两个连续的2-节点,因为可能会导致合并和递归合并
在这里插入图片描述
故if (!isRed(h.left) && !isRed(h.left.left))及flipsColors()对于2-3-4树也是适用的

细心的人可能发现,在2-3-4左倾红黑树可能多出现另一种情况,这在原论文没有给出,即右边左右红色链接,这需要更多的旋转操作
在这里插入图片描述
在这里插入图片描述

2-3左倾红黑树删除最大值的情况

同理,只有当待删除元素为3-叶节点或待删除元素的父节点为3-节点时不影响树平衡,反映到红黑树需要保证待删除元素节点为红链接或其父节点为红链接其对立面是待删除元素节点和父节点都是黑链接,即不能出现连续的2-节点

按照删除最小值的方式将右搜索路径的连续黑链接都翻转变色,但当其左链接为红色时,其本身就是3-节点,需要对其右旋恢复,故只有当其左连接不为红才需要翻转,即代码中的!isRed(h.right) && !isRed(h.right.left)和flipColors()
在这里插入图片描述
同理flipsColors()的操作会导致:

  • 引入单左红色链接(如插入60-50-70,删除70,会导致50红)
  • 引入左右红色链接(如插入60-50-70-40-55-80-90,删除90,会导致50和70红)
  • 引入左右红色链接导致的右右红色连续链接(如插入60-50-70-40-55-80-90-100,删除100,会导致70和90红)
  • 引入左右红色链接导致的右左红色连续链接(如插入60-50-70-40-55-80-90-75,删除90,会导致80和75红)

第一种情况不用管,第二三种情况将在fixUp()中修复,第四种情况在遇到后要立即修复,即代码中的isRed(h.left.left)
在这里插入图片描述

2-3-4左倾红黑树删除最大值的额外情况

在2-3-4左倾红黑树可能多出现另一种情况,即左边为左右红色链接,如下图,其变换步骤一样,不需要额外的代码
在这里插入图片描述

2-3和2-3-4左倾红黑树删除一般情况

要理解删除一般情况的代码,必须充分理解删除最大最小值的代码,尤其是为什么不能出现连续的2-节点,关于这点,可以再看看这篇 https://www.freesion.com/article/4026432302/#Key_398 在这里插入图片描述

2-3左倾红黑树完整代码

原论文代码是运行不了的,为了测试对原论文进行了一些修改,但关键代码是一样的

class LL23RB<Key extends Comparable<Key>, Value> {private static final boolean RED = true;private static final boolean BLACK = false;private Node root;private class Node {private Key key;private Value value;private Node left, right;private boolean color;Node(Key key, Value value) {this.key = key;this.value = value;this.color = RED;}}public Value search(Key key) {Node searchNode = searchNode(root, key);if (searchNode != null) {return searchNode.value;}return null;}private Node searchNode(Node node, Key key) {Node x = node;while (x != null) {int cmp = key.compareTo(x.key);if (cmp == 0) return x;else if (cmp < 0) x = x.left;else if (cmp > 0) x = x.right;}return null;}public void insert(Key key, Value value) {root = insert(root, key, value);root.color = BLACK;}private Node insert(Node node, Key key, Value value) {if (node == null) return new Node(key, value);int cmp = key.compareTo(node.key);if (cmp == 0) node.value = value;else if (cmp < 0) node.left = insert(node.left, key, value);else node.right = insert(node.right, key, value);node = fixUp(node);return node;}private boolean isRed(Node node) {if (node == null) {return false;}return node.color == RED;}private Node fixUp(Node node) {if (isRed(node.right) && !isRed(node.left)) node = rotateLeft(node);if (isRed(node.left) && isRed(node.left.left)) node = rotateRight(node);if (isRed(node.left) && isRed(node.right)) flipColors(node);return node;}private Node rotateLeft(Node h) {Node x = h.right;h.right = x.left;x.left = h;x.color = h.color;h.color = RED;return x;}private Node rotateRight(Node h) {Node x = h.left;h.left = x.right;x.right = h;x.color = h.color;h.color = RED;return x;}private void flipColors(Node h) {h.color = !h.color;h.left.color = !h.left.color;h.right.color = !h.right.color;}public void deleteMin() {root = deleteMin(root);root.color = BLACK;}private Node deleteMin(Node h) {if (h.left == null) return null;if (!isRed(h.left) && !isRed(h.left.left))h = moveRedLeft(h);h.left = deleteMin(h.left);return fixUp(h);}private Node moveRedLeft(Node h) {flipColors(h);if (isRed(h.right.left)) {h.right = rotateRight(h.right);h = rotateLeft(h);flipColors(h);}return h;}public void deleteMax() {root = deleteMax(root);root.color = BLACK;}private Node deleteMax(Node h) {if (isRed(h.left)) {h = rotateRight(h);}if (h.right == null) {return null;}if (!isRed(h.right) && !isRed(h.right.left)) {h = moveRedRight(h);}h.right = deleteMax(h.right);return fixUp(h);}private Node moveRedRight(Node h) {flipColors(h);if (isRed(h.left.left)) {h = rotateRight(h);flipColors(h);}return h;}public void delete(Key key) {root = delete(root, key);root.color = BLACK;}private Node min(Node node) {if (node == null) {return null;}Node current = node;while (current.left != null) {current = current.left;}return current;}private Value get(Node node, Key key) {Node searchNode = searchNode(node, key);if (searchNode != null) {return searchNode.value;}return null;}private Node delete(Node h, Key key) {if (key.compareTo(h.key) < 0) {if (!isRed(h.left) && !isRed(h.left.left))h = moveRedLeft(h);h.left = delete(h.left, key);} else {if (isRed(h.left))h = rotateRight(h);if (key.compareTo(h.key) == 0 && (h.right == null))return null;if (!isRed(h.right) && !isRed(h.right.left))h = moveRedRight(h);if (key.compareTo(h.key) == 0) {h.value = get(h.right, min(h.right).key);h.key = min(h.right).key;h.right = deleteMin(h.right);} else h.right = delete(h.right, key);}return fixUp(h);}private void innerMidOrderTraversal(Node node) {if (node == null) {return;}innerMidOrderTraversal(node.left);System.out.print("[" + node.key + "-" + node.value + "]");if (node.color) {System.out.print("r" + " ");} else {System.out.print("b" + " ");}innerMidOrderTraversal(node.right);}@NonNull@Overridepublic String toString() {System.out.print("中序遍历: ");innerMidOrderTraversal(root);return "";}
}

2-3-4左倾红黑树完整代码

相比于2-3左倾红黑树代码,修改了insert()、moveRedLeft()部分

class LL234RB<Key extends Comparable<Key>, Value> {private static final boolean RED = true;private static final boolean BLACK = false;private Node root;private class Node {private Key key;private Value value;private Node left, right;private boolean color;Node(Key key, Value value) {this.key = key;this.value = value;this.color = RED;}}public Value search(Key key) {Node searchNode = searchNode(root, key);if (searchNode != null) {return searchNode.value;}return null;}private Node searchNode(Node node, Key key) {Node x = node;while (x != null) {int cmp = key.compareTo(x.key);if (cmp == 0) return x;else if (cmp < 0) x = x.left;else if (cmp > 0) x = x.right;}return null;}public void insert(Key key, Value value) {root = insert(root, key, value);root.color = BLACK;}private Node insert(Node h, Key key, Value value) {if (h == null) return new Node(key, value);if (isRed(h.left) && isRed(h.right)) flipColors(h);int cmp = key.compareTo(h.key);if (cmp == 0) h.value = value;else if (cmp < 0) h.left = insert(h.left, key, value);else h.right = insert(h.right, key, value);if (isRed(h.right) && !isRed(h.left)) h = rotateLeft(h);if (isRed(h.left) && isRed(h.left.left)) h = rotateRight(h);return h;}private Node rotateLeft(Node h) {Node x = h.right;h.right = x.left;x.left = h;x.color = h.color;h.color = RED;return x;}private Node rotateRight(Node h) {Node x = h.left;h.left = x.right;x.right = h;x.color = h.color;h.color = RED;return x;}private void flipColors(Node h) {h.color = !h.color;h.left.color = !h.left.color;h.right.color = !h.right.color;}private boolean isRed(Node node) {if (node == null) {return false;}return node.color == RED;}public void deleteMin() {root = deleteMin(root);root.color = BLACK;}private Node deleteMin(Node h) {if (h.left == null) return null;if (!isRed(h.left) && !isRed(h.left.left))h = moveRedLeft(h);h.left = deleteMin(h.left);return fixUp(h);}private Node moveRedLeft(Node h) {flipColors(h);if (isRed(h.right.left)) {if (isRed(h.right.right)) {//这是2-3-4树额外的情况,不能复用代码,因为旋转时修改了hh.right = rotateRight(h.right);h = rotateLeft(h);h = rotateLeft(h);h.left = rotateRight(h.left);flipColors(h);} else {h.right = rotateRight(h.right);h = rotateLeft(h);flipColors(h);}}return h;}private Node moveRedRight(Node h) {flipColors(h);if (isRed(h.left.left)) {h = rotateRight(h);flipColors(h);}return h;}public void deleteMax() {root = deleteMax(root);root.color = BLACK;}private Node deleteMax(Node h) {if (isRed(h.left)) {h = rotateRight(h);}if (h.right == null) {return null;}if (!isRed(h.right) && !isRed(h.right.left)) {h = moveRedRight(h);}h.right = deleteMax(h.right);return fixUp(h);}private Node fixUp(Node node) {if (isRed(node.right) && !isRed(node.left)) node = rotateLeft(node);if (isRed(node.left) && isRed(node.left.left)) node = rotateRight(node);if (isRed(node.left) && isRed(node.right)) flipColors(node);return node;}public void delete(Key key) {root = delete(root, key);root.color = BLACK;}private Node min(Node node) {if (node == null) {return null;}Node current = node;while (current.left != null) {current = current.left;}return current;}private Value get(Node node, Key key) {Node searchNode = searchNode(node, key);if (searchNode != null) {return searchNode.value;}return null;}private Node delete(Node h, Key key) {if (key.compareTo(h.key) < 0) { //处理向左搜索路径的情况,避免连续的2-节点if (!isRed(h.left) && !isRed(h.left.left))h = moveRedLeft(h);h.left = delete(h.left, key);       //向左走} else {            //处理向右和相等的情况if (isRed(h.left))             //若当前是3-节点,则先右旋恢复h = rotateRight(h);if (key.compareTo(h.key) == 0 && (h.right == null)) //处理删除根节点或叶节点的情况,如60-50删除60return null;if (!isRed(h.right) && !isRed(h.right.left))    //处理向右搜索路径的情况,避免连续的2-节点h = moveRedRight(h);if (key.compareTo(h.key) == 0) {        //处理删除的是内部节点的情况,用后继节点键值替代,转为删除后继节点h.value = get(h.right, min(h.right).key);h.key = min(h.right).key;h.right = deleteMin(h.right);} else h.right = delete(h.right, key);     //向右走}return fixUp(h);    //递归回调时消除生成的右红链接和左右红链接}private void innerMidOrderTraversal(Node node) {if (node == null) {return;}innerMidOrderTraversal(node.left);System.out.print("[" + node.key + "-" + node.value + "]");if (node.color) {System.out.print("r" + " ");} else {System.out.print("b" + " ");}innerMidOrderTraversal(node.right);}@NonNull@Overridepublic String toString() {System.out.print("中序遍历: ");innerMidOrderTraversal(root);return "";}
}
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. JavaScript-BOM对象

    Browser Object Model 浏览器对象模型 7.1、window 代表浏览器窗口 window.alert(1)undefinedwindow.innerHeight760window.innerWidth743window.outerHeight864window.outerWidth1536//获取浏览器的宽度和高度&#xff0c;根据调整随时发生改变 7.2、Navigator 封装了浏览…...

    2024/5/4 23:20:12
  2. 六,比特币系统 中 存在的 几种分叉

    0,fork&#xff1a; 在一些情境下&#xff0c;BTC system 中的 block chain 出现2条 &#xff08;甚至 多条&#xff09;分叉链。 根据 造成 fork 的 不同原因&#xff0c;可以 将fork分为以下2类&#xff1a; 1,state fork&#xff1a; 当有2个 fullnode 同时 挖到1个 block…...

    2024/4/19 14:06:45
  3. golang的简易教程(不定期更新中...)

    1.go运行环境搭建&#xff1a; 1).golang的安装 2).go导入第三方包 3).goland运行项目错误 4).go项目的打包部署 2.go的基础&#xff1a; 1).go通过Mutex实现互斥锁(Mutex原理) 2).go的文件操作 3).go的IO 4).go的erros异常 5).go的json 3.go的MySql&#xff1a; 1).使用docker…...

    2024/4/19 9:39:01
  4. 静态树定义常用操作无测试

    const int maxn 100; struct node{int data;//数据域int lchild; //指向左子树的指针域int rchild; //指向右子树的指针域 }Node[maxn];int index 0; int newNode(int v){Node[index].data v;Node[index].lchild -1;Node[index].rchild -1;return index; }void search(int…...

    2024/4/14 2:58:43
  5. 1004.最大连续1的个数Ⅲ

    class Solution {public int longestOnes(int[] nums, int k) {int left 0, right 0, result 0;while(right < nums.length){if(nums[right] 0){if(k 0){// 若nums[left]一直是1&#xff0c;那么还要往右一个while(nums[left] 1) left;left;}else{--k;}}result Math.…...

    2024/4/20 11:56:05
  6. 不一样角度的javaSE知识点小汇总

    目录 一、Java中能出现语句的位置 1、方法的内部&#xff08;抽象方法除外&#xff09; 2、类的内部&#xff08;属性或赋值语句&#xff09; 3、代码块 4、构造方法&#xff1a; 5、内部类&#xff0c;匿名类&#xff0c;lambda表达式 二、语句什么时候被执行 1.语句写…...

    2024/4/19 18:14:33
  7. Log4j2 + SLF4j打造日志系统

    原创&#xff1a;Log4j2 SLF4j打造日志系统 - 云社区 - 腾讯云 2019-01-15阅读 2.3K0 目录 一&#xff1a;前言二&#xff1a;添加依赖 2.1&#xff1a;去除直接和间接依赖的log4j1和SLF4j2.2&#xff1a;添加依赖三&#xff1a;xml配置 3.1&#xff1a;log4j2.xml常用demo…...

    2024/4/14 2:58:33
  8. Java安全API

    Java安全API目录概述小结&#xff1a;参考资料和推荐阅读LD is tigger forever&#xff0c;CG are not brothers forever&#xff0c; throw the pot and shine forever. Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, an…...

    2024/4/19 9:17:25
  9. 制作正方体html+css3(动画)

    <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta http-equiv"X-UA-Compatible" content"IEedge"><title>实现一个正方体</title><meta name"viewport" content"widthde…...

    2024/4/20 14:22:41
  10. pytorch搭建cnn网络学习记录

    参考resnet&#xff0c;简单搭了一个cnn网络&#xff0c;这里记录一下。 任务是做一个猫狗识别&#xff0c;数据集是从kaggle上下的。 下面是网络搭建代码&#xff1a; import torch from torch import nn import torch.nn.functional as Fclass cnn(nn.Module):def __init__(…...

    2024/4/25 8:17:04
  11. 黑马程序员并发编程笔记(二)--java线程基本操作和理解

    3.java进程的基本操作 3.1.创建进程 方法一&#xff0c;直接使用 Thread // 构造方法的参数是给线程指定名字&#xff0c;&#xff0c;推荐给线程起个名字(用setName()也可以) Thread t1 new Thread("t1") {Override// run 方法内实现了要执行的任务public void …...

    2024/5/4 16:22:08
  12. 你的网页有多快 — 从 DOMReady 到 Element Timing

    总所周知&#xff0c;写文章需要一个标题。虽然我们搞代码的人一般都喜欢单刀直入&#xff0c;但是受制于文体的约束和发表载体的要求&#xff0c;有时不得不想一个标题。而起一个标题&#xff0c;不亚于起一个函数名或者变量名。单就这篇文章&#xff0c;我就有好几个草稿标题…...

    2024/5/4 22:25:45
  13. SpringBoot源码分析

    SpringBoot源码分析(二)之自动装配demo 文章目录SpringBoot源码分析(二)之自动装配demo前言一、创建RedissonTemplate的Maven服务二、创建测试服务三、总结前言 Spring Framework一致在解决如何让bean的管理更加简单&#xff0c;如何让开发者尽可能少的去管理bean生成的一些配…...

    2024/5/4 15:00:01
  14. DevOps模式下测试左移和测试右移

    一、什么是DevOps模式 可以参看我的上一篇文章&#xff1a;[什么是DevOps模式]&#xff0c;本文主要介绍DevOps模式下测试左移和测试右移可以做的事项有哪些~(https://blog.csdn.net/baidu_28340727/article/details/122620748) 二、测试左移内容 2.1 PRD评审 这一点相信很多…...

    2024/5/4 16:48:41
  15. Java小项目实训——扑克牌

    项目要求&#xff1a; 一个窗口实现无序发放52张扑克牌&#xff1b;另一个窗口实现记录打出的扑克牌 Poke类 public class Poke {String name[] { "fang", "hong", "mei", "hei" };String a[] new String[52];String b[] new Stri…...

    2024/4/5 4:01:14
  16. 【1.1 C案例】请君与我用C语言写一个千行的学生管理系统

    一、本次目标 完成核心头文件前的所有准备工作&#xff0c;包含从VS2022创建新项目到第一个自定义头文件的编写。 GitHub&#xff1a;https://github.com/ITchujian/StudentManagementSystem_2022_C 注&#xff1a;为方便分享本次开发的经验&#xff0c;我将把分析过程以及代码…...

    2024/5/4 23:05:06
  17. (数据库系统概论|王珊)第七章数据库设计-第三节:概念结构设计

    文章目录一&#xff1a;E-R模型&#xff08;1&#xff09;两个实体之间的联系A&#xff1a;两个实体型之间的联系①&#xff1a;一对一联系&#xff08;1:1&#xff09;②&#xff1a;一对多联系&#xff08;1:n&#xff09;③&#xff1a;多对多联系&#xff08;m:n&#xff0…...

    2024/4/19 18:53:51
  18. [BUUCTF-pwn] codegate_prequals_2017_BabyMISC

    越来越难了&#xff0c;跳过10道题后&#xff0c;作了个misc 程序很短 __int64 __fastcall main(int a1, char **a2, char **a3) {setbuf(stdout, 0LL);puts("[*] Ok, Lets Start. Input the write string on each stage!:)");if ( !sub_400EA8() ) …...

    2024/5/4 21:05:12
  19. Leetcode70场双周赛-第四题2147. 分隔长廊的方案数

    题目描述 2147. 分隔长廊的方案数 解题思想 进行一轮遍历&#xff0c;每次循环中&#xff0c;找三把椅子。记录第三把椅子的位置。只有在第三把椅子和第二把椅子之间可以放屏风&#xff0c;这两把椅子之间有可以通过下标相减得出。假如找不到第一把、第二把椅子&#xff0c;那…...

    2024/4/14 2:59:04
  20. JavaSE数组练习

    1、输出杨辉三角 2、冒泡排序 3、选择排序 4、插入排序 5、创建要给长度为6的int类型数组&#xff0c;要求数组元素的值再1-30之间&#xff0c;且随机赋值。同时要求数组元素各不相同...

    2024/4/14 2:59:04

最新文章

  1. Sqli-labs第一关到第四关

    目录 一&#xff0c;了解PHP源代码 二&#xff0c;破解第一关 2.1在了解完源码之后&#xff0c;我们重点看一下 2.2破解这道题表中有几列 2.3查看表中哪一列有回显 2.4查询库&#xff0c;表&#xff0c;列信息 三&#xff0c;总结 前提&#xff1a; 之所以把1234关…...

    2024/5/5 0:59:25
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. Docker - Nginx

    博文目录 文章目录 说明命令 说明 Docker Hub Nginx 数据卷数据卷印射在容器内的路径nginx.conf/etc/nginxnginx.html/usr/share/nginx/htmlnginx.log/var/log/nginx 容器内的路径说明/etc/nginx/nginx.conf配置文件/etc/nginx/conf.d配置目录/usr/share/nginx/html静态目录/…...

    2024/5/3 2:14:54
  4. [C++/Linux] UDP编程

    一. UDP函数 UDP&#xff08;用户数据报协议&#xff0c;User Datagram Protocol&#xff09;是一种无连接的网络协议&#xff0c;用于在互联网上交换数据。它允许应用程序发送数据报给另一端的应用程序&#xff0c;但不保证数据报能成功到达&#xff0c;也就是说&#xff0c;它…...

    2024/5/3 8:59:07
  5. JVM专题——类文件结构

    本文部分内容节选自Java Guide和《深入理解Java虚拟机》, Java Guide地址: https://javaguide.cn/java/jvm/class-file-structure.html &#x1f680; 基础&#xff08;上&#xff09; → &#x1f680; 基础&#xff08;中&#xff09; → &#x1f680;基础&#xff08;下&am…...

    2024/5/1 7:18:39
  6. 【外汇早评】美通胀数据走低,美元调整

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

    2024/5/4 23:54:56
  7. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/5/4 23:54:56
  8. 【外汇周评】靓丽非农不及疲软通胀影响

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

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

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

    2024/5/4 23:55:17
  10. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

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

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

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

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

    2024/5/4 23:55:16
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

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

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

    2024/5/4 18:20:48
  16. 【外汇早评】美伊僵持,风险情绪继续升温

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

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

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

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

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

    2024/5/4 23:55:06
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

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

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

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

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

    2024/5/4 2:59:34
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

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

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

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

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

    2024/5/4 23:55:01
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

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

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

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

    2022/11/19 21:17:18
  27. 错误使用 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
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,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
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:16:58
  45. 如何在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