优先级队列(堆)

优先级队列与堆的关系 队列具有先进先出的特性,而优先级队列是按照优先级来进行处理。即:优先级队列的出队列操作不是直接将队头元素出队列,而是把队列中优先级最高的元素出队列。 要选出优先级最高的元素则可以借助堆来完成。堆堆分为:最小堆和最大堆。 最小堆: 将数据按照二叉树的方式进行排列,其中每个节点的根节点的值小于其左子树和右子树,与左、右孩子的大小无关,称为最小堆。 最大堆: 将数据按照二叉树的方式进行排列,其中 阅读详情

 日升时奋斗,日落时自省

目录

一、回顾

习题一:

习题二:

 习题三:

 习题四:

二、接口使用

2.1PriorityQueue的特性

 2.2接口涉及的引用类

  2.3接口涉及的包装类

一、回顾

习题一:

1.下列关键字序列为堆的是:(A)
A: 100,60,70,50,32,65 B: 60,70,65,50,32,100 C: 65,100,70,32,50,60
D: 70,65,100,32,50,60 E: 32,50,100,70,65,60 F: 50,100,70,65,60,32

解题:堆分为大根堆和小根堆

这里就不解释那么多的图,上一个博客已经解释什么是大根堆

 其余的可以自己尝试画图,是否满足;

习题二:

2.已知小根堆为8,15,10,21,34,16,12,删除关键字8之后需重建堆,在此过程中,关键字之间的比较次数是(C)
A: 1 B: 2 C: 3 D: 4

 习题三:

3.一组记录排序码为(5 11 7 2 3 17),则利用堆排序方法建立的初始堆为(D)
A: (11 5 7 2 3 17) B: (11 5 7 2 17 3) C: (17 11 7 2 3 5)
D: (17 11 7 5 3 2) E: (17 7 11 3 5 2) F: (17 7 11 3 2 5)

 习题四:

4.最小堆[0,3,2,5,7,4,6,8],在删除堆顶元素0之后,其结果是(C)
A: [3,2,5,7,4,6,8] B: [2,3,5,7,4,6,8]
C: [2,3,4,5,7,8,6] D: [2,3,4,5,6,7,8]

二、接口使用


2.1PriorityQueue的特性

java集合框架中PriorityQueue和PriorityBlockingQueue两种类型的优先级队列。

PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的

 

 2.2接口涉及的引用类

优先级队列的底层是一个小根堆

class Student implements Comparable<Student>{

    public int age;
    public Student(int age){
        this.age=age;
    }
    @Override
    public int compareTo(Student o) {
        return this.age-o.age;
    }
}

 如何将这个代码改为一个大根堆,其实很简单,这里的comparaTo方法中改为o.age-this.age

代码解释:

  2.3接口涉及的包装类

包装类不是引用类,比较的话就需要实现比较器,其实刚刚看到的地方有一个if语句没有执行,它就是这里的关键(图解)

 我们知道这里是小根堆,那想改成大根堆就需要改原码,改原码我们是做不到的,但是我们可以写一个比较器

 变成大根堆与前面的相似 比较器方法改为   o2-o1

 

【全开源】旅行吧旅游门票预订系统源码(FastAdmin+ThinkPHP+Uniapp) 此外,系统还会根据我的旅行计划和喜好,为我推荐合适的景点和门票,让我的旅行更加丰富多彩。旅游门票预订系统的出现,不仅简化了门票预订的流程,还提高了旅行的便捷性和效率。一款基于FastAdmin+ThinkPHP+Uniapp开发的旅游门票预订系统,支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统,提供前后台无加密源码,支持私有化部署。如今,有了旅游门票预订系统,这些问题都能迎刃而解。智能推荐:系统还会根据你的旅行计划和喜好,为你推荐合适的景点和门票,让你的旅行更加丰富多彩。 阅读详情

相关推荐

从Power到HO:一文搞懂主流脑图谱在DPABI里怎么选,让你的rs-fMRI分析更精准

本文深入解析了rs-fMRI分析中主流脑图谱(如Power、HO、AAL等)在DPABI中的科学选择策略,帮助研究者根据不同的神经科学研究目标优化分析流程。从解剖学图谱到功能连接图谱的特性对比,到DPABI实操中的多图谱分析工作流,提供了全面的方法论指导,助力提升静息态功能磁共振成像(rs-fMRI)研究的精准度和可重复性。

weixin_30654583的博客 403

堆排序(选择类排序)

目录一、堆的定义二、堆与序列的关系三、算法思想3.1 建立初始堆3.2 重建堆3.2.1 过程分析3.2.2 算法实现3.3 堆排序 第一次循环 第二次循环 第三次循环

狂放不羁霸的博客 8296

【Labview】对连续采集数据的一种采样方法

图1如图1,想要对这样一个连续信号进行数据点的采集,我根据网上收集到的方法,在此分享一下最终的结果。可以拓展结合文件的写入,完成对连续信号的采集和输出。 已知: 一个连续信号,如图1. 目标: 设定一定采集点个数、采集点时间间隔、和采集周期次数,得到这条连续信号的数据点,如图2. 图2 方法如下: 主要利用的是队列的方法。 在连续信号生成的时候,不断的写入队列,并且清除队列。 ...

李时珍食疗志的博客 1万+

堆(heap)与优先队列(priority queue)

一、堆 1.堆定义: 如果这棵完全二叉树的任意结点的关键字小于或等于其左孩子和右孩子的关键字,则称之为小堆

weixin_52575498的博客 4235

Fluent新手必看:如何正确解读scaled residuals曲线(附常见问题排查)

本文详细解析了Fluent中scaled residuals曲线的解读方法及常见问题排查技巧。针对continuity残差居高不下、湍流模型收敛困难等典型问题,提供了网格质量检查、边界条件验证和求解策略调整的实用解决方案,帮助CFD新手快速掌握计算收敛性的关键判断标准。

weixin_28698059的博客 377

ABAP代码检查(Code Review)

1、SLIN 扩展程序检查 也可通过(SE38工具栏->检查-扩展程序检查) 进入 2、ATC 检查 通过<SE38菜单栏-检查-ABAP测试主控室> 或事物代码SCI, 支持自定义检查变式 SCI可以配置检查变式满足特殊需求,配置对象集用于批量检查 3、通过ABAP测试主控室实现统一管理,定期检查作业和监控功能(事务代码ATC) 参考 SLIN...

u012232542的博客 6069

手撕最小堆(重构堆 + 插入数据 + 删除数据 代码讲解 + 例题)

文章目录推荐堆排序博客与视频讲解前引堆介绍1、Heapify(重建堆)2、Push(插入数据)3、Pop(删除数据)最小堆代码实现最小堆例题链接 推荐堆排序博客与视频讲解 堆排序(堆重建 + 插入 + 删除详细讲解)UP主:秃头少女王某人 强推 前引 今天10点才起床 大二了 真的不知道为什么越起床越晚了 当然现在也是周末 但是起这么晚 还是得做事情 在每日三道面试题的发现 第二个竟然是手撕堆排序 说来太惭愧了 原来数据结构 本来对手撕堆排序超级超级自信的 结果 我这一次从零开始写 写了好久 呜呜

Love 6's Private Blog 858

嵌入式学习笔记- 关于电容的纹波电流

纹波电流是导致电解电容发热、影响其寿命的关键交流电流成分。它不是一种特殊的电流,而是电路中必然存在的现象。要重视,不能忽视。必须保证电路中的纹波电流 < 电容的额定纹波电流。电容鼓包爆浆,要怀疑是否是纹波电流过大或电容ESR变大所致。希望这个解释能帮助您彻底理解这个概念!二 电容纹波电流与频率的关系在大多数情况下,频率越高,电容所能承受的额定纹波电流值越大。【个人理解:因为频率越低ESR越大,具体见第三节ESR与频率的关系】下面我为您详细解释为什么会这样,以及在实际应用中如何考虑。

qq_35771411的博客 2196

堆结构和堆排序

堆(优先队列) 时间复杂度: 初始化建堆的时间复杂度为 O(n) 堆排序重建堆 O(nlogn) PriorityQueue小顶堆 小顶堆:任意一个非叶子节点的权值,都不大于其左右子节点的权值 构造函数 构造器 功能介绍 PriorityQueue() 创建一个空的优先级队列,默认容量是11 PriorityQueue(int initialCapacity) 创建一个初始容量为initialCapacity的优先级队列,注意: initialCapacity不能小于1,否则会抛 Il

shu__shu的博客 487

【仿真】Carla Python API实战:从零搭建自动驾驶测试环境

本文详细介绍了如何使用Carla Python API从零搭建自动驾驶测试环境。通过Carla仿真平台,开发者可以构建高度逼真的城市环境和车辆物理模型,利用Python API实现传感器配置、数据采集、场景构建及自动驾驶算法集成。文章还分享了实际项目中的调试技巧和性能优化经验,帮助读者快速掌握自动驾驶仿真测试的核心技术。

weixin_29050513的博客 213

MiniQMT国债逆回购策略Python代码全解析

通过本文的介绍,我们不仅学习了如何在MiniQMT平台上使用Python编写国债逆回购策略,还对策略的逻辑构建、代码实现以及风险管理有了深入的了解。国债逆回购策略是一种适合初学者的低风险投资方式,希望本文能帮助你在量化交易的道路上迈出坚实的一步。

木头大左的博客 1919

Java基础题:小根堆为8,15,10,21,34,16,12,删除关键字8之后需重建堆,需要的比较次数为?

用到向下调整: 删除8后,将12移动到堆顶,首先12和15、10比较,并和10交换,最后比较12和16,故比较次数为3次。

长不大的大灰狼 1万+

100天精通Python(进阶篇)——第43天:批量将PDF转Word文档(附上脚本代码)

100天精通Python(进阶篇)——第43天:批量将PDF转Word文档(附上脚本代码)

努力让自己发光,对的人才能迎着光而来 9万+

【数据结构】堆和优先级队列

堆的构建和基本方法的实现以及TopK问题。

m0_50987960的博客 1123

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

数据结构 堆与优先级队列

本文介绍了堆和优先级队列的概念及应用。堆是一种特殊的完全二叉树,包括大根堆和小根堆,具有高效的存储和操作方式。堆的创建、插入和删除等核心操作通过向上/向下调整算法实现。优先级队列基于堆实现,支持高效获取最高优先级元素。在Java中,PriorityQueue默认是小根堆,可通过比较器定制排序规则。此外,文章还讲解了Java对象比较的Comparable接口实现方式,通过compareTo方法定义对象间的大小关系。这些数据结构在算法和系统设计中有着广泛的应用价值。

双吉堡工程专业的一名27届Javaer。 1584

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

优先级队列(堆)

Java集合框架中提供了和两种类型的优先级队列,是线程不安全的,是线程安全的,本文主要介绍。关于PriorityQueue的使用要注意:1. 使用时必须导入PriorityQueue所在的包,即:2. PriorityQueue中放置的元素必须要能够比较大小,不能插入无法比较大小的对象,否则会抛出 ClassCastException异常3. 不能插入null对象,否则会抛出NullPointerException4.没有容量限制,可以插入任意多个元素,其内部可以自动扩容5.

m0_63562631的博客 1059

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java优先级队列(堆)

堆严格意义上来说又叫二叉堆(Binary Heap),因为它的结构是一颗完全二叉树,堆一般分为最大堆和最小堆。 堆性质: 结构性:堆是一颗除底层外被完全填满的二叉树,底层的节点从左到右填入,这样的树叫做完全二叉树。即缺失结点的部分一定再树的右下侧。 堆序性:由于我们想很快找出最小元,则最小元应该在根上,任意节点都小于它的后裔,这就是小顶堆(Min-Heap);如果是查找最大元,则最大元应该在根上,任意节点都要大于它的后裔,这就是大顶堆(Max-heap)。

buhuisuanfa的博客 4021

【数据结构】优先级队列(堆)

掌握堆的概念及实现,掌握PriorityQueue 的使用

m0_73107796的博客 3069

优先级队列(堆)以及堆的创建

这种数据结构就是如果有一个,把它的所有元素且12…,则或大 堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。大根堆示例从堆的概念可知,注意:对于,因为为了能够还原二叉树,。将元素存储到数组中后,可以根据二叉树章节的性质5对树进行还原。假设i为节点在数组中的下标,则有:如果i为0,则i表示的节点为根节点,否则i节点的双亲节点为(i - 1)/2如果。

2401_86415114的博客 1199

堆&优先级队列

本文要点: 1.堆的实现 3.利用堆实现优先级队列 一、堆 1.堆是一种数组对象,可以被看作一颗完全二叉树结构,堆结构的二叉树存储是一种静态存储。 堆又被分为大堆和小堆: 大堆:每个父节点大于子节点 小堆:每个父节点小于子节点 2.堆的实现(以大堆为例) 实现一个堆主要在于要建堆和调整。 假设现有数组int a[] = { 10, 16, 18, 12, 11, 13,

YANG 666

Java——优先级队列(堆)

优先级队列是一种特殊的数据结构,它允许元素按照优先级进行出队操作,优先级高的元素先出队。与普通队列的先进先出(FIFO)原则不同,优先级队列适用于需要根据优先级处理元素的场景,如系统任务调度或学生座位安排。优先级队列通常提供两个基本操作:返回最高优先级对象和添加新对象。在Java的JDK1.8中,PriorityQueue通过堆(Heap)实现,堆是一种基于完全二叉树的数据结构,分为最大堆和最小堆。堆的存储采用顺序方式,利用数组高效存储完全二叉树。堆的创建和调整涉及向下调整过程,确保堆的性质得以维持,即父节

linhai166025的博客 1187

Java实现优先级队列(堆)

Java实现优先级队列(堆)

2301_80288511的博客 1233

【Java数据结构】堆到底是什么东西?一文帮你理解——优先级队列(堆)

????博客主页:????敲代码的布莱恩特???? ????欢迎点赞 ???? 收藏 ⭐留言 ???? 欢迎讨论!???? ????本文由 【敲代码的布莱恩特】 原创,首发于 优快云???????????? ????由于博主是在学小白一枚,难免会有错误,有任何问题欢迎评论区留言指出,感激不尽!✨ ????精品专栏(不定时更新)【JavaSE】 【Java数据结构】【LeetCode】 【Java数据结构】堆是个什么东西?一文带你理解——优先级队列(堆)????1.二叉树的顺序储存????二叉树的顺序储

DerrickWestbrook的博客 4742

堆 和 优先级队列

堆、优先级队列、实现一个优先级队列、PriorityQueue的应用

Fighting!!! 1164
上一篇: 优先级队列(堆)
下一篇: TreeMap与TreeSet(初步了解)
学习自省
博客等级 码龄5年 284粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值