Leetcode 165. 比较版本号

Leetcode 165:比较版本号(超详细解决方案!!!) 比较两个版本号 version1 和 version2。 如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。 你可以假设版本字符串非空,并且只包含数字和 . 字符。 . 字符不代表小数点,而是用于分隔数字序列。 例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。 你可以假设... 阅读详情

题目

比较两个版本号 version1 和 version2。
如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。

你可以假设版本字符串非空,并且只包含数字和 . 字符。

. 字符不代表小数点,而是用于分隔数字序列。

例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。

你可以假设版本号的每一级的默认修订版号为 0。例如,版本号 3.4 的第一级(大版本)和第二级(小版本)修订号分别为 3 和 4。其第三级和第四级修订号均为 0。

示例 1:

输入: version1 = “0.1”, version2 = “1.1”
输出: -1

…

示例 4:

输入:version1 = “1.01”, version2 = “1.001”
输出:0
解释:忽略前导零,“01” 和 “001” 表示相同的数字 “1”。

示例 5:

输入:version1 = “1.0”, version2 = “1.0.0”
输出:0
解释:version1 没有第三级修订号,这意味着它的第三级修订号默认为 “0”。

提示:

  • 版本字符串由以点 (.) 分隔的数字字符串组成。这个数字字符串可能有前导零。
  • 版本字符串不以点开始或结束,并且其中不会有两个连续的点。

解答

解法一:转成数字处理

将字符串按照 . 分割。

对每一个子串转成整数后比较大小即可。

缺点:数字大的时候,可能不能转成整数。(当然一般情况下子版本号也不会大于 21 亿。。)

代码
class Solution {
    public int compareVersion(String version1, String version2) {
        String[] w1 = version1.split("\\.");
        String[] w2 = version2.split("\\.");
        
        int maxLen = Math.max(w1.length, w2.length);
        for(int i = 0; i < maxLen; i ++) {
            String s1 = i < w1.length ? w1[i] : "0";
            String s2 = i < w2.length ? w2[i] : "0";
            int result = Integer.valueOf(s1) - Integer.valueOf(s2);
            if(result != 0) return result > 0 ? 1 : -1;
        }
        
        return 0;
    }
}
结果

在这里插入图片描述

解法二:字符串比较(适应大数据)

改进:适应大数据量。

思路简单:

  1. 首先对要比较的字符串去除前导 0 .
  2. 判断剩余长度,长度大的当然更大了。
  3. 长度相等的情况下一一比较即可。
代码
class Solution {
    public int compareVersion(String version1, String version2) {
        String[] w1 = version1.split("\\.");
        String[] w2 = version2.split("\\.");
        
        int maxLen = Math.max(w1.length, w2.length);
        for(int i = 0; i < maxLen; i ++) {
            String s1 = i < w1.length ? w1[i] : "0";
            String s2 = i < w2.length ? w2[i] : "0";
            int result = compare(s1, s2);
            if(result != 0) return result > 0 ? 1 : -1;
        }
        
        return 0;
    }

    private int compare(String s1, String s2) {
        int i = 0;
        int j = 0;
        while(i < s1.length() && s1.charAt(i) == '0') i ++;
        while(j < s2.length() && s2.charAt(j) == '0') j ++;
        if(s1.length() - i != s2.length() - j) return s1.length() - i - (s2.length() - j);
        
        while(i < s1.length() && j < s2.length()) {
            char c1 = s1.charAt(i ++);
            char c2 = s2.charAt(j ++);
            if(c1 != c2) return c1 - c2;
        }
        
        return 0;
    }
}
结果

在这里插入图片描述

Java实现 LeetCode 165 比较版本号 165. 比较版本号 比较两个版本号 version1 和 version2。 如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。 你可以假设版本字符串非空,并且只包含数字和 . 字符。 . 字符不代表小数点,而是用于分隔数字序列。 例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五... 阅读详情

相关推荐

leetcode-165比较版本号-学习过程&实现代码

给你两个version1和version2,请你比较它们。版本号由被点'.'分开的修订号组成。是它并忽略前导零。比较版本号时,请按依次比较它们的修订号。如果其中一个版本字符串的修订号较少,则将缺失的修订号视为0。-110-1version1 的第二个修订号为 "2",version2 的第二个修订号为 "10":2 < 10,所以 version1 < version2。0忽略前导零,"01" 和 "001" 都代表相同的整数 "1"。0。

m0_71523828的博客 864

leetcode165

class Solution { public: int compareVersion(string version1, string version2) { for(int i = 0;i<version1.size();i++) { if(version1[i] == '.') version1[i] = ' '; ...

剑似生平 218

【中等】力扣算法题解析LeetCode165:比较版本号

本文介绍了比较两个版本号字符串的方法。版本号由被点分隔的修订号组成,比较时需从左到右逐段对比,忽略前导零,缺失部分视为0。关键优化是使用双指针遍历字符串,避免分割操作,直接提取整数比较。算法时间复杂度为O(n+m),空间复杂度O(1)。代码通过双指针同步遍历,动态处理长度差异,高效完成比较。

ylumwd的博客 1004

LeetCode-165.比较版本号

比较两个版本号 version1和 version2。 如果version1>version2返回1,如果version1<version2 返回 -1, 除此之外返回 0。 你可以假设版本字符串非空,并且只包含数字和. 字符。 . 字符不代表小数点,而是用于分隔数字序列。 例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。...

Archer的博客 303

从DBC到ARXML:详解DaVinci Configurator中通信栈的自动化配置逻辑

本文深入解析了Vector公司DaVinci Configurator工具如何将DBC文件自动转换为符合AUTOSAR标准的ARXML配置,详细介绍了从DBC到ARXML的映射逻辑、自动化配置的边界与陷阱,以及工程实践中的优化策略。帮助工程师高效配置汽车电子系统中的通信协议,提升项目开发效率。

weixin_30279671的博客 717

别再只用串口助手了!用LabVIEW给STM32F103C8T6做个专属上位机(附完整源码)

本文详细介绍了如何利用LabVIEW为STM32F103C8T6开发定制化上位机,替代传统串口助手,实现高效数据交互。内容涵盖硬件架构设计、STM32固件优化、LabVIEW上位机开发技巧及工业级应用案例,特别适合需要实时数据采集与处理的工控场景。

weixin_42524762的博客 366

leetcode算法练习 JavaScript实现

leetcode 表格内容由spider.js从leetcode-cn.com爬取。 已做题目答案也从leetcode-cn.com中爬取并生成文件。 解题进度:已解决 134/629&amp;amp;amp;nbsp;-&amp;amp;amp;nbsp;简单&amp;amp;amp;nbsp;92&amp;amp;amp;nbsp;中等&amp;amp;amp;nbsp;36&amp;amp;amp;nbsp;困难&amp;amp;am

liusaint1992的专栏 8570

RK3588网络调试笔记:当我把默认RTL8211F PHY换成另一款时,踩了哪些坑?

本文详细记录了在RK3588平台上将默认RTL8211F PHY芯片替换为其他型号的全过程,包括硬件设计验证、内核驱动适配、复位时序配置等关键步骤。通过实际案例分享,提供了从驱动调试到硬件优化的系统性解决方案,帮助开发者高效完成PHY芯片替换,确保网络接口稳定性。

weixin_30291791的博客 669

leetcode 165

我的代码效率居然排100% 但看别人的代码我这个代码不够精简。 var search1 = function ( version1 ,version2) { pos1 = version1.indexOf('.'); pos2 = version2.indexOf('.'); if(pos1==-1 && pos2==-1){ if(pars

vulgatecn1的博客 291

Windows Server安装Intel I219-V网卡驱动完整教程

在Windows Server系统上安装Intel I219-V网卡驱动的方法。

小白成长历程 5171

ardupilot SBUS输入捕获

本节主要记录ardupilot 的sbus 输入捕获功能。ardupilot 默认支持多种无线协议控制输入设备,比如常用的PPM,SBUS,IBUS,DSM,SUMD,SRXL等协议,本节主要讲解ardupilot 如何通过定时器的pwm输入捕获来获取sbus数据。

陌城烟雨 269

力扣 LeetCode 165. 比较版本号

注意需要对点号进行转义。

qq_61504864的博客 369

EXCEL VBA从入门到精通 前言

本书通过丰富的实例和案例,帮助读者更好地理解和应用Excel VBA编程,同时也介绍了常用的工具、资源、社区和协作平台等,方便读者进行进一步的学习和开发。我强烈推荐这本书给所有希望学习和掌握Excel VBA编程的读者。多样化的资源和工具介绍:本书介绍了丰富的工具和资源,包括官方文档、在线教程、代码库、论坛、博客等,方便读者进行进一步的学习和开发。详细的讲解和丰富的示例:本书从语法和对象开始讲解,通过丰富的实例和案例,帮助读者更好地理解和应用Excel VBA编程。第一节:什么是VBA 5。

1724

双指针解决力扣第165题:比较版本号

力扣刷题

bzaZJU的博客 264

基于THUCNews数据集bert bert_wwm的新闻文本分类

基于THUCNews数据集bert bert_wwm的新闻文本分类

984

详解AUTOSAR:专栏总述

本专栏系统介绍AUTOSAR规范及车用控制器软件开发,内容覆盖基础架构、SWC/RTE、通信栈、诊断、存储、安全、看门狗、工具链、环境配置与项目实战,并持续更新各模块的集成机制与工程要点。

不脱发的程序猿 3920

力扣(LeetCode)165. 比较版本号

165. 比较版本号 问题 给你两个版本号 version1 和 version2 ,请你比较它们。 版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。 比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修

Ackerman2的博客 1100

深度学习工具包 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")

Leetcode 165. 比较版本号 C++

Leetcode 165. 比较版本号 题目 比较两个版本号 version1 和 version2。 如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。 你可以假设版本字符串非空,并且只包含数字和 . 字符。 . 字符不代表小数点,而是用于分隔数字序列。 例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。 你可以假设版本号的每一级的默认修订版号为 0。例如,版本号 3.4 的第一级

weixin_43750513的博客 1025

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LeetCode165——比较版本号

我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/compare-version-numbers/description/ 题目描述: 知识点:字符串 思路一:先分割再比较 时间复杂度是O(n),其中n为version1和version2中较长字符串的长度...

清风阁 497

LeetCode165- 比较版本号(Compare Version Numbers)

LeetCode165- 比较版本号(Compare Version Numbers) 最近全国疫情严重,待在家里没事干,马上又要准备春招了,最近刷刷题,记录一下!再说一句,武汉加油,大家出门记得戴口罩! 1、题目 比较两个版本号 version1 和 version2。 如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1,...

sk18192449347的博客 6628

LeetCode-165. 比较版本号【双指针 字符串】

我们可以将版本号按照点号分割成修订号,然后从左到右比较两个版本号的相同下标的修订号。注意根据题目要求,如果版本号不存在某个下标处的修订号,则该修订号视为 0。version1 的第二个修订号为 “2”,version2 的第二个修订号为 “10”:2 < 10,所以 version1 < version2。方法一需要存储分割后的修订号,为了优化空间复杂度,我们可以在分割版本号的同时解析出修订号进行比较。version1 有更少的修订号,每个缺失的修订号按 “0” 处理。原创文章,转载告知,盗版必究。

zik的博客 1021

每日一题:Leetcode-165 比较版本号

力扣题目解题思路java代码。

LIUCHANGSHUO的博客 930

LeetCode第165题_比较版本号

给你两个版本号version1和version2,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由组成,可能包含。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0,下一个修订号下标为 1,以此类推。例如,2.5.33和0.1都是有效的版本号。比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较。也就是说,修订号1和修订号001相等。如果版本号没有指定某个下标处的修订号,则该修订号视为0。例如,版本。

qq_40263592的博客 849

LeetCode 165. 比较版本号 | C++语言版

给你两个版本号 version1 和 version2 ,请你比较它们。 版本号由一个或多个修订号组成,各修订号由一个 '.' 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。 比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号 1 和修订号 00

weixin_45992021的博客 423

Leetcode 165. 比较版本号

【代码】Leetcode 165. 比较版本号。

JehanRio's Private Blog 934

【Leetcode:165. 比较版本号 + 双指针】

【Leetcode:165. 比较版本号 + 双指针】给你两个 版本号字符串 version1 和 version2 ,请你比较它们。版本号由被点 '.' 分开的修订号组成。修订号的值 是它 转换为整数 并忽略前导零。 比较版本号时,请按 从左到右的顺序 依次比较它们的修订号。如果其中一个版本字符串的修订号较少,则将缺失的修订号视为 0。

Coder_ljw的博客 853
上一篇: Leetcode 151. 翻转字符串里的单词
下一篇: Leetcode 227. 基本计算器 II
一纸浮萍
博客等级 码龄9年 11粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值