数据结构与算法笔记:求直方图最大面积算法分析

[纠错]直方图中矩形最大面积 由于个人原因,上次上传的是练习的,有写问题,这是自己修改后的... 直方图中每一块的宽度都是1,每一块给定的高度分别是[2,1,5,6,2,3]; 那么上述直方图中,面积最大的矩形面积 = 10单位 立即下载

直方图最大面积

问题描述

  • 有n列的直方图,第j列高度为hjh_jhj​, 求一个面积最大的子矩阵

在这里插入图片描述

格式要求

  • 输入第一行正整数n,第二行n个空格隔开的非负整数
  • 数据范围: 所有直方图的列不会超过30000

数据范围

  • 对于 30% 的测试点,保证 n<=4
  • 对于 70% 的测试点,保证 n<=1000
  • 对于所有测试点,保证 n<=50000
  • 保证所有 h[i] 不超过 32767

关键算法实现

1 ) 算法1:时间复杂度为: O(n3)O(n^3)O(n3)的实现

分析

  • 矩形面积为底和高的乘积
  • 底部从a到b,那么底边长为: b-a+1
  • 高为:min{hi∣a≤i≤b}min \{h_i | a \leq i \leq b \}min{hi​∣a≤i≤b}
  • 面积:(b-a+1) * min{hi∣a≤i≤b}min \{h_i | a \leq i \leq b \}min{hi​∣a≤i≤b}
  • 蛮力算法:枚举每一条可能的底边, 计算出高, 求出面积再取一个最大的
  • 这里效率较低,可能通不过所有数据点,因为普通计算机的瓶颈是10的8次方
  • 当n为1000的时候,复杂度是O(n3)=(103)3=109O(n^3) = (10^3)^3 = 10^9O(n3)=(103)3=109 所以无法在1s内通过所有的OJ数据测试点
/*
* n:表示n列直方图
* h:表示高度的数组,h[i]表示第i列的高度(下标从1开始)
*/
int getResult(int n, int *h) {
    // 最后答案
    int res = 0;
    // 第一层循环枚举直方图左边界位置
    for (int a = 1; a <= n; ++a) {
        // 第二层循环枚举直方图右边界位置
        for (int b = a; b <= n; ++b) {
            // 要求,保证所有 h[i] 不超过 32767,记录最小高度, 这里只做数据的初始化,取一个比最大值大的值即可
            int minH = 50000;
            // 第三层循环从a到b更新最小高度,这里的高要找最矮的,木桶效应
            for (int c = a; c <= b; ++c) {
                minH = min(minH, h[c]); // 更新最小高度
            }
            res = max(res, (b - a + 1) * minH); // 更新最大面积
        }
    }
    return res;
}

总结:太慢了,属于比较原始的蛮力算法,没有任何优化的算法, 这是能够直接想到的

2 ) 算法2:减少循环, 时间复杂度为: O(n2)O(n^2)O(n2)的实现优化版本

分析

  • 考虑无法修改从a到b的底边位置的双重循环枚举,但是可以优化对最小高度的求解
  • 从a到b最小高度H1H_1H1​, 和 从a到b+1的最小高度H2H_2H2​之间的关系: H2=min{H1,hb+1}H_2 = min\{ H_1, h_{b+1} \}H2​=min{H1​,hb+1​}
int getResult(int n, int *h) {
    // 最后答案
    int res = 0;
    // 第一层循环枚举直方图左边界位置
    for (int a = 1; a <= n; ++a) {
        // 要求,保证所有 h[i] 不超过 32767,记录最小高度, 这里只做数据的初始化,取一个比最大值大的值即可
        int minH = 50000;
        // 第二层循环枚举直方图右边界位置
        // 思路:a到b的最小高度H1 和 a到b+1的最小高度H2的关系:H2=min(H1, h_{b+1})
        // 由此减少了一次循环
        for (int b = a; b <= n; ++b) {
            minH = min(minH, h[b]); // 更新最小高度
            res = max(res, (b - a + 1) * minH); // 更新最大面积
        }
    }
    return res;
}

总结:优化思路是在a和b的底之间找到最小高度

3 ) 算法3:通过卡位来计算,时间复杂度为: O(n2)O(n^2)O(n2)的实现优化版本

  • 对于每一列,找到左右两端的卡位点,左卡位点lo, 右卡位点hi, 形成矩形的面积:S=(hi−lo−1)∗hiS = (hi - lo - 1) * h_iS=(hi−lo−1)∗hi​
  • 枚举所有列需要O(n), 每列找到卡位点也需要O(n),合起来是O(n2)O(n^2)O(n2)
// 卡位计算, 蛮力算法
int getResult(int n, int *h) {
    // 最后答案
    int res = 0;
    // 第一层循环枚举直方图所有的列, 从1~n, 表示第1列到第n列
    for (int a = 1; a <= n; ++a) {
        // 取出当前列的高度
        int curH = h[a];
        // 左卡位点
        int lo = 0;
        // 右卡位点
        int hi = 0;
        // 第二层找到当前列的左右卡位点,并计算最大矩形面积
        // 1.找到左卡位点
        for (lo = a - 1; lo >= 1; lo --){
            if(h[lo] < curH) {
                break;
            }
        }
        // 2.找到右卡位点
        for (hi = a + 1; lo <= n; hi++){
            if(h[hi] < curH) {
                break;
            }
        }
        // 3.计算当前最大面积
        res = max(res, (hi - lo - 1) * curH);
    }
    return res;
}

4 ) 算法4:通过单调栈来计算,时间复杂度为: O(n)O(n)O(n)的实现优化版本

  • 从左至右枚举直方图的每一列,然后维护一个从栈底到栈顶是高度单调上升的栈
    • 比如,当前在k列,经过一系列扫描, 扫描k之前的元素,栈顶元素的高度是当前栈中最大的高度
    • 这个栈存放的是直方图所有列的索引(编号)
  • 根据下一个需要插入的列与栈顶的关系,进行弹出栈顶并更新答案或将该列压入栈中
    • 如果当前k的元素高度比栈顶元素的高度要大,那么当前元素k进栈,循环继续往前走
    • 如果要小,则当前的k会作为矩形的右卡位点,栈顶元素作为矩形的左卡位点,栈顶元素的高度作为矩形的高度,算出当时的面积,栈顶元素出栈(已计算完成,出栈)
    • 进而累计得出当前最大面积
    • 循环继续往前走,每次进行判断,进栈和出栈,计算得到当前最大矩形面积
    • 循环结束后即可得到整体最大矩形面积
  • 技巧在于左右两边加上哨兵
    • 如果不在左右加上,需要判断各种边界条件
    • 这是一个小trick
  • h是高度数组,h[i]表示第i列的高度(下标从1开始),数组大小为n+2
  • 其中前后两端都加一个哨兵,分别是:h[0], h[n+1], 高度均为0
// 单调栈方式实现
int getResult(int n, int *h) {
    // 最后答案
    int res = 0;
    // 单调栈,记录的是在h数组中的位置,栈顶所对应的高度是最高的,也就是单调递增
    stack<int> myStack;
    // 初始化单调栈,提前压入一个哨兵,总体有前后两个哨兵,分别是h[0]和h[n+1],高度都是0
    myStack.push(0);

    // 进行栈过滤, 从1到n+1, 最后一个也是一个哨兵0, 可以循环n+1次
    for (int i = 1; i <= n + 1; ++i) {
        // 如果栈顶元素高度大于当前元素的高度时,则弹出栈顶
        while(h[myStack.top()] > h[i]) {
            // 记录栈顶元素高度
            int nowHeight = h[myStack.top()];
            // 弹出栈顶
            myStack.pop();
            // 比较最大面积
            res = max(res, (i - myStack.top() - 1) * nowHeight);
        }
        // 将当前下标插入栈中
        myStack.push(i);
    }
    return res;
}

如果不考虑while, 程序变形:

// 单调栈方式实现 形式转换
int getResult(int n, int *h) {
    // 最后答案
    int res = 0;
    // 单调栈,记录的是在h数组中的位置,栈顶所对应的高度是最高的,也就是单调递增
    stack<int> myStack;

    // 初始化单调栈,提前压入一个哨兵,总体有前后两个哨兵,分别是h[0]和h[n+1],高度都是0
    myStack.push(0);

    // 进行栈过滤, 从1到n+1, 最后一个也是一个哨兵0, 可以循环n+1次
    for (int i = 0; i <= n+1;) {
        if(myStack.empty() || h[myStack.top()] <= h[i]) {
            // 进栈
            myStack.push(i);
            i++;
        } else {
            // 记录当前栈顶元素高度
            int nowHeight = h[myStack.top()];
            // 弹出栈顶
            myStack.pop();
            // 比较最大面积
            res = max(res, (i - myStack.top() - 1) * nowHeight);
        }
    }
    return res;
}

总结:对于每一列, 找到左右两端的卡位hi和lo, 形成的矩形面积为:底×高, 即:(hi - lo - 1) * h, 可见这是一个线性的算法O(n)

算法5:通过分治策略来处理

分析

  • 同样是基于卡位点来实现的
  • 找到某一点作为pivot来分开左右两边(lo,h) k = findPivot(h, lo, hi),
  • 分完之后, 还要考虑merge的方式,即左右和左右贯穿
    • (1) 计算 maxRect(h,lo,k) 左矩形面积
    • (2) 计算 maxRect(h,k+1,hi) 右矩形面积
    • (3) 计算 h[k] * (hi - lo - 1) 左右贯穿矩形面积
    • 找到上面三个的最大值作为局部最大值
  • 此算法框架的复杂度取决于所使用的技术(可以考虑使用线段树的相关知识减少复杂度,此处不做过多说明)

通用的输入程序

int main() {
    int n;
    cin >> n;
    int *height = new int[n + 2]();
    // 在这里控制输入中的height[0]和height[n+1]均为0
    for (int i = 1; i <= n; ++i) {
        cin >> height[i];
    }
    cout << getResult(n, height) << endl;
    delete[] height;
    return 0;
}

测试输入数据

  • 输入:
    • 5
    • 2 3 3 3 2
  • 输出:10

相关说明

  • 如果没有什么高效的好的算法,先从蛮力算法开始解决问题,在这个过程中可能启发我们想到更高效的做法
  • 最后可以用蛮力算法来验证新算法的正确性
  • 一般而言,算法优化顺序是:蛮力 => 贪心 => 减治和分治

扩展

  • 还有一种结构叫做 LookUpTable, 需要考虑 构造、存储和查询的复杂度,尽管查询很快,只需要O(1), 但是构造和查询很复杂O(n2)O(n^2)O(n2), 效率令人堪忧
  • 另一种是线段树 Segment Tree, 构,存,查的复杂度分别为:nlogn、n、logn
【TCAX相关】Python 官方手册下载页面(中文+英文) Python 官方手册下载页面(中文+英文) 中文: https://docs.python.org/zh-cn/3.8/archives/ https://docs.python.org/zh-cn/3.6/archives/ 英文: https://www.python.org/doc/versions/ https://docs.python.org/3/archives/ https://www.python.org/ftp/python/doc/ ... 阅读详情

相关推荐

tewa-707e光猫超级密码获取方法

这款光猫很魔性,没有WIFI,没有USB接口,没有Telnet,试了很多方法去获取超级密码都不行。解密时可能会报错,可能是文件后面部分不晓得是咋拼接过来的,用AES解密时分组数据有问题。3、这个文件是用AES加密了的,直接打开是乱码,所以得用AES解密,key为16个字节的 x00。打开解出来的文件,然后搜索 telecomadmin,就可以发现超级密码了。参考资料里面的光猫不是同一款,但解密的方法基本相同的。

shaowl111的专栏 1万+

直方图最大矩形面积(剑指offer-39)

原题链接 题目描述 给定非负整数数组 heights ,数组中的数字用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例1 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的矩形为图中红色区域,面积为 10 示例2 输入: heights = [2,4] 输出: 4 第1种思路(分治法) 对于某个柱子来说,最大矩形有三种情况。 1.最大矩形是以这个柱子为顶部的。 2.最大矩形的起始柱子和终点柱子都在这个柱子的

Ego12138的博客 3829

从Unitree B2W到四足机器人:用Isaac Lab构建强化学习奖励函数的5个实战技巧

本文分享了在Isaac Lab仿真环境中,为Unitree B2W等四足机器人设计强化学习奖励函数的5个核心实战技巧。内容涵盖奖励函数的结构化组合、轮腿混合机器人的适配策略、课程学习的动态调整、域随机化增强鲁棒性以及高效的调试可视化方法,旨在帮助开发者构建更稳定、高效的机器人运动策略。

lg888的博客 1066

直方图的最大面积问题

(1)问题描述:直方图中最大矩形面积,一个直方图是有许多矩形组成的,在给定的直方图中找出最大的矩形面积,为了简化,假定所有矩形的宽为1。(2)直方图最大面积的算法理解:    1、将一个起伏的直方图分解成一个个小的递增的直方图,    2、再计算每个递增直方图的最大面积    3、遍历完成之后会得到一个递增的栈,栈的值所对应的直方图的高也是递增的    3、那么用同样的思路计算出这个递增的直方图的...

qq_40898500的博客 2406

基于LORA的双机通信的智能农业系统

通过LoRa模块与主机进行通信,监测环境中的温度、湿度、土壤湿度和光照强度等参数,并根据预设的自动控制逻辑或者手动指令控制继电器开关,从而调节风扇、加热器、水泵、喷雾器和灯光等设备,为植物提供适宜的生长环境。使用的Lora是大夏龙雀的感觉这个是我使用过的Lora里面最好用的,因为不用设置频道就可以直接透明传输,使用起来得心应手。就像两个单片机直接串口通信一样,缺点是异步串行,不能同时进行接收和发送。继电器灯亮模拟打开对应的风扇、水泵、灯、喷雾、加热。1.使用温度传感器测当前环境的温湿度。

ssjsjss的博客 1740

ZYNQ实战:PS端驱动DMA实现高效数据流转与验证

本文详细介绍了在ZYNQ平台上通过PS端驱动DMA实现高效数据流转的实战方法。从ZYNQ的PS与PL数据交互基础出发,深入解析DMA核心价值,包括硬件平台搭建、Vivado配置、PS端软件架构设计及性能优化技巧,帮助开发者提升数据传输效率与系统性能。

weixin_29192141的博客 439

leetcode_question_85 Largest Rectangle in Histogram

Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram. Above is a histogram where width

ZkvIA的博客 1万+

别再折腾SNAP了!ENVI 5.6.0 直接拖拽打开Sentinel-2 L2A数据的正确姿势

本文详细介绍了ENVI 5.6.0直接处理Sentinel-2 L2A数据的高效方法,无需通过SNAP进行繁琐的重采样预处理。通过直接拖拽XML文件,用户可以快速加载不同分辨率的波段数据,显著提升工作效率。文章还对比了直接打开与SNAP重采样流程的优劣,并提供了常见问题解决方案和高级应用技巧。

weixin_30296405的博客 635

【数据结构与算法】求直方图最大面积——动态规划

用left表示第i个柱子可以最多向左延伸至第left个柱子,形成一个矩形,right则表示向右延伸。遍历两次,分别计算出这两个构成的最大柱子宽度。再遍历一次,即可求出所有的柱子可以形成的最大的矩形面积。解释:最大的矩形为图中红色区域,面积为 10。

摸鱼小小虫的博客 557

Mac用户看过来!M1/M2芯片安装CiteSpace完整指南(从Homebrew到成功运行)

本文为Mac M1/M2芯片用户提供CiteSpace安装的完整指南,从Homebrew安装适配的Java环境到最终成功运行CiteSpace。详细步骤包括环境检查、Java配置、CiteSpace下载与优化,解决常见问题如内存分配、图形渲染和中文显示乱码,确保科研人员能顺利使用这一文献可视化工具。

weixin_42530458的博客 308

MATLAB 与 STK 互联的两种连接方式详解

批量仿真推荐使用方法一;交互分析推荐使用方法二。可以根据具体任务灵活切换,也可以同时使用两种方式,提升建模与仿真的效率。

weixin_52370774的博客 1567

1102 面积最大的矩形

有一个正整数的数组,化为直方图,求此直方图包含的最大矩形面积。例如 2,1,5,6,2,3,对应的直方图如下:     面积最大的矩形为5,6组成的宽度为2的矩形,面积为10。 收起 输入 第1行:1个数N,表示数组的长度(0 &lt;= N &lt;= 50000) 第2 - N + 1行:数组元素A[i]。(1 &lt;= A[i] &lt;= 10^9) 输出 输出最...

沈君乱 406

游戏大厂技术护城河:你以为他们靠“美术和买量”,其实背后全是硬家伙

先把效果堆满到快上线了才发现低端机跑不动然后疯狂砍特效、降分辨率,画面崩、口碑崩机型分档(低/中/高)每帧预算(CPU/GPU 各多少 ms)每种资源预算(贴图、网格、粒子数量)性能自动回归(每天跑性能测试,发现波动立刻报警)大白话:小厂像装修到入住前才发现电路不够,临时拉线;大厂从设计图开始就算承重、算电路、算水压。玩家会不会来?活动会不会爆?版本会不会翻车?外挂会不会泛滥?竞品会不会抄?流量不确定 → 可扩容架构版本不确定 → 灰度与回滚。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 105

美团2016年编程题:直方图最大矩形面积

题目说明: 有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。 给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。 测试样例: 输入:[2,7,9,4,1],5 输出:14 题目分析: 方法一: 简单分析,...

DaringTang的博客 899

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LintCode 直方图最大矩形覆盖

问题描述: 给出的n个非负整数表示每个直方图的高度,每个直方图的宽均为1,在直方图中找到最大的矩形面积。 以上直方图宽为1,高度为[2,1,5,6,2,3]。 最大矩形面积如图阴影部分所示,含有10单位。     分享本题的一种”暴力“解法。矩形的最大面积由宽度和该宽度范围内最低的高度决定。因此进行两次遍历,第一次遍历数组中的每一个元素;第二次以该元素为中心向左右两个方向遍

gzy13269561397的博客 2168

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

寻找直方图中面积最大的矩形--英雄会

直方图中面积最大的矩形:给定直方图,每一小块的height由N个非负整数所确定,每一小块的width都为1,请找出直方图中面积最大的矩形。    如下图所示,直方图中每一块的宽度都是1,每一块给定的高度分别是[2,1,5,6,2,3]; 那么上述直方图中,面积最大的矩形面积 = 10单位。

_Luffy的程序之路 977

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

寻找直方图中面积最大的矩形

给定直方图,每一小块的height由N个非负整数所确定,每一小块的width都为1,请找出直方图中面积最大的矩形。    如下图所示,直方图中每一块的宽度都是1,每一块给定的高度分别是[2,1,5,6,2,3]:    那么上述直方图中,面积最大的矩形便是下图所示的阴影部分的面积,面积= 10单位。

№k_ven 662

直方图最大面积 ---- DP

Given n non-negative integers representing the histogram’s bar height where the width of each bar is 1, find the area of largest rectangle in the histogram. Above is a histogram where width of each

半壶老酒 1444

Largest Rectangle in Histogram (直方图中最大面积) 【leetcode】

题目: Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram. Above is a histogram wh

Havenoidea 的专栏 7297

CCF201312-3 最大的矩阵

问题描述 试题编号: 201312-3 试题名称: 最大的矩形 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。 ...

Six_God_97的博客 277

C++最大长方形

首先如图所示,在表T中记录各元素向上存在多少个连续的干净瓷砖。对各列使用动态规划法可以很轻松地求出T 把表T的每行都看成一个直方图,本题就了求直方图内最大长方形的问题,于是我们转为考虑求直方图中最大长方形的面积。这里最容易想到的仍然是穷举法,我们可以列出直方图的所有端点,求出各个范围内的最大长方形的面积(以该范围内最小值为高的长方形的面积)。然后取其中最大值。但是,这个算法套用到原题中的话,整体的...

qq_41979513的博客 739

【poj2559】直方图中的最大矩形【单调栈】

题目大意 给定从左到右多个矩形,已知这此矩形的宽度都为1,长度不完全相等。这些矩形相连排成一排,求在这些矩形包括的范围内能得到的面积最大的矩形,打印出该面积。所求矩形可以横跨多个矩形,但不能超出原有矩形所确定的范围。下图中阴影部分为最大矩形。 原题&样例 分析 建立一个单调递增栈,所有元素各进栈和出栈一次即可。每个元素出栈的时候打擂台更新最大的矩形面积。 我们需要维护一个二元组(也就是struct中的两个变量),一个存高,一个存宽。 因为一个矩形的宽度不仅是向右延伸,也会向左延伸,所以就用一个tm

ssllyr 287

A-最大矩形(单调栈)

A-最大矩形(单调栈) 一、题目描述 给一个直方图,求直方图中的最大矩形的面积。例如,下面这个图片中直方图的高度从左到右分别是2, 1, 4, 5, 1, 3, 3, 他们的宽都是1,其中最大的矩形是阴影部分。 Input 输入包含多组数据。每组数据用一个整数n来表示直方图中小矩形的个数,你可以假定1 <= n <= 100000. 然后接下来n个整数h1, ..., hn, 满足 0...

东玮的博客 310

WEEK5作业-A-最大矩形

题目: 给一个直方图,求直方图中的最大矩形的面积。例如,下面这个图片中直方图的高度从左到右分别是2, 1, 4, 5, 1, 3, 3, 他们的宽都是1,其中最大的矩形是阴影部分。 Input 输入包含多组数据。每组数据用一个整数n来表示直方图中小矩形的个数,你可以假定1 <= n <= 100000. 然后接下来n个整数h1, …, hn, 满足 0 <= hi <= 1...

m0_46388072的博客 225

庞果英雄会---寻找直方图中面积最大的矩形---编程挑战

题目链接:http://hero.pongo.cn/home/index 这里给出一个线性算法和一个平方算法,第一个算法没有问题,挑战成功。第二个算法测试了很多数据但是失败,有大神路过,恳请点拨。 #include using namespace std; int g[500],index[500]; int max_rect(int x[], int n) { int s = 0,

R_xiaozhu_Q的专栏 1080

AcWing 3194:最大的矩形 ← 笛卡尔树

●笛卡尔树是一种非常特殊的二叉查找树(BST)。每个结点有两个信息 (pri, val),如果只考虑pri,它是一棵二叉查找树,如果只考虑val,它是一个小根堆。 一般地,构建笛卡尔树时,我们按第一关键字 pri 排序(很多时候,pri 值即为数组下标)。​​​​​​​本题中,pri 值就是数组下标,无需排序,直接按给定的高度建树。

hnjzsyjyj的专栏 936
上一篇: AI笔记: 数学基础之极大似然估计
下一篇: 数据结构与算法笔记: 最大红矩形分析
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值