力扣 24.两两交换链表中的节点

LeetCode24两两交换链表中的节点 算法特点及适用场景特点利用递归的方法实现链表节点的两两交换操作,代码结构简洁明了,逻辑清晰,符合链表这种通过指针依次访问节点的数据结构特点,易于理解和实现。它能够准确地按照要求将链表中相邻的两个节点进行两两交换,保证了链表结构在交换后的正确性。时间复杂度为 ,在处理链表节点两两交换问题上具有较好的效率表现,只要链表的节点数量在可接受范围内,都能快速地完成交换操作。适用场景。 阅读详情

力扣《反转链表》系列文章目录

刷题次序,由易到难,一次刷通!!!

题目题解
206. 反转链表反转链表的全部 题解1
92. 反转链表 II反转链表的指定段 题解2
24. 两两交换链表中的节点两个一组反转链表
25. K 个一组翻转链表K 个一组反转题解3

一、题目

在这里插入图片描述

二、解题思路

对于反转指定段的链表,都采用将所需要反转的这一段单独摘出来,先记录好这段的上一个节点和下一个节点。将需要反转的部分反转好之后,再将其正确链接回原链表,参照下图。
在这里插入图片描述
创建一个哑节点(dummy node),它的next指向头节点,这样可以简化边界条件的处理。接着,使用一个while循环来遍历链表,采用两个每次循环交换一对相邻的节点。最后,返回哑节点的next,即交换后的链表的头节点。
注意:对 cur 进行赋值前,必须检验 pre 是否为 null,不是 null 才可以对 cur 进行赋值。

三、代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode swapPairs(ListNode head) {
        ListNode dummy = new ListNode(0, head);// 创建一个哑节点(dummy node),它的next指向头节点,这样可以简化边界条件的处理
        ListNode ppre = dummy;
        ListNode pre = dummy.next;
        if (pre == null) {
            return head;
        }
        ListNode cur = pre.next;
        while (cur != null) {
            ListNode nxt = cur.next;// 保存“下一个节点”
            cur.next = pre;// 反转
            pre.next = nxt;// 连回原链表的“下一个节点”
            ppre.next = cur;// 连回原链表的“上一个节点”
            ppre = pre;
            pre = pre.next;
            if (pre == null) {
                break;
            } else {
                cur = pre.next;
            }
        }
        return dummy.next;
    }
}
【中等】力扣算法题解析LeetCode24:两两交换链表中的节点 该题目要求两两交换链表中的相邻节点,只能通过修改节点指针实现。使用虚拟头节点简化操作,通过三指针(pre、node1、node2)迭代完成交换:保存node2的后继节点,调整pre、node2、node1的指针关系,最后移动pre到下一组的前驱位置。时间复杂度O(n),空间复杂度O(1)。 阅读详情

相关推荐

Qwen 三代进化全景对比:从 Qwen2.5 到 Qwen3 再到 Qwen3.5

本文对比了阿里巴巴通义千问三代大模型(Qwen2.5、Qwen3、Qwen3.5)的技术演进。18个月内,模型在架构、训练数据和能力上实现显著突破:从纯稠密结构(Qwen2.5)发展为混合注意力架构(Qwen3.5),支持语言从29种扩展至201种,并实现原生多模态融合。关键进展包括引入MoE架构、Gated DeltaNet混合注意力机制(计算效率提升10倍)、以及从独立模态到早期视觉语言联合训练的转变。模型阵容从7个通用尺寸发展为8+个混合架构,最大参数量达397B,上下文窗口扩展至256K(托管版1M

m0_47999117的博客 1万+

递归-24.两两交换链表中的节点-力扣(LeetCode)

我们的重复子问题就是将链表两两交换,需要一个ListNode*的参数,由于需要返回新的头指针,所以返回值类型是ListNode*。所以题目提供的函数可以拿过来用。

black_bear_white的博客 1038

2023-10-20 - MacBook - 优化外接2k显示器体验:告别字小与字虚的终极指南

本文针对MacBook外接2K显示器时普遍遇到的字体过小和边缘发虚问题,提供了终极解决方案。通过深入解析macOS的HiDPI与Retina显示原理,并详细指导使用SwitchResX等工具开启隐藏的HiDPI模式,实现完美的2倍整数缩放,从而在保证字体大小合适的同时获得清晰锐利的显示效果,彻底告别字小与字虚的困扰。

solidity8miner的博客 476

24. 两两交换链表中的节点(力扣LeetCode)

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]输入:head = []输出:[]输入:head = [1]输出:[1]

m0_73841621的博客 730

TRON 主网节点搭建-2024最新详细版文档

TRON主网节点搭建以前,大概说明一下本次使用的服务器配置,本次从搭建部署到节点完成同步的时间大约为36小时。

J_Lee 4057

扩散模型实战:从零开始训练手写数字生成模型

手写数字的数据集是绝大部分炼丹师的深度学习初恋,这篇博客以代码为主,手把手带读者搭建一个基于扩散模型的手写数字生成模型,非常适合刚接触扩散模型的初学者学习。

沉迷单车的追风少年 1912

24. 两两交换链表中的节点 - 力扣(LeetCode)

​ 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。​ 递归是一种将问题分解为更小子问题的方法。递归地进行同样的操作。最终,整个链表会通过递归调用被逐步交换完成。递归需要一个明确的终止条件,以避免无限递归。

q1111111da的博客 3980

【Burp入门第二篇】Chrome配置BurpSuite代理教程

1、配置Burp代理为127.0.0.1:80802、扩展商店添加插件switchyomega,修改服务器和端口为下图:3、打开代理,选择刚才添加的代理

等风来 8368

LeetCode24-两两交换链表中的节点

LeetCode24-两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 一、分析 创建一个额外的节点来保存下一个节点所指向的节点,这样就不会丢失节点 易错点1:直接使用头结点 return ...

lyd1995的博客 403

微信小程序 - 最新详细实现调起手机摄像头拍摄身份证人像面和国徽面取景框功能,在拍照相机上增加身份证证件照的轮廓或自定义文字,支持替换扫描拍摄辅助线图片及文本,小程序实现拍照身份证时带取景轮廓框拍摄!

微信小程序,身份证,证件照,人像,证件照提示框模板,vue身份证拍照框,摄像机相机里有引导内容,取景框拍摄,微信小程序实现拍照界面自定义实现,自拍人相框拍摄,取景框,户口簿取景框,画布指定区域生成图片,微信小程序身份证正反面拍照如何加入辅助图片引导照片,身份证取景框拍摄,服务器,上传,正反面,调起手机摄像头: 拍摄身份证的正反面,自定义身份证取景框,在相机上绘制 “身份证轮廓“ 与提示文字,拍摄身份证时出现人像框怎么实现,在相机上增加图片和文字,微信小程序怎么给调起的相机加入自定义图片,小程序实现给相机上面

🏆 前端领域优质创作者 3403

【异常】安装hermes-agent时提示GnuTLS recv error (-110): The TLS connection was non-properly terminated.

Git克隆仓库时出现TLS连接异常报错的解决方案摘要: 当执行git clone命令时遇到"GnuTLS recv error (-110)"报错,通常由网络不稳定、缓冲区不足或证书验证问题导致。主要解决方案包括:1)增大Git HTTP缓冲区(git config --global http.postBuffer 524288000);2)使用GitHub镜像站加速克隆;3)临时禁用SSL验证进行测试;4)检查并调整代理配置;5)改用SSH协议克隆。建议优先尝试增大缓冲区和镜像站方案,

奶爸的编程之路,也就一周冷个三天 1349

LeetCode第 24 题:两两交换链表中的节点(C++)

24. 两两交换链表中的节点 - 力扣(LeetCode) 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 这题还是有点麻烦的,需要画图好好分析, 迭代 24. 两两交换链表中的节点_慢慢冲鸭子的博客,这位同学的图画的很好。 class Solution { public: ListNode* swapPairs(ListNode* head) { if(!head || !head->next) return head; ListNode

zj 304

手把手教你学Simulink——基于Simulink的模糊自适应PI调节FOC电流环

本文提出基于模糊自适应PI控制的FOC电流环优化方案,针对传统PI控制参数固化、抗扰性差等问题,通过模糊逻辑在线调整PI参数。方案采用双输入(电流误差及变化率)和三输出(ΔKp/ΔKi/PI调节)结构,实现动态响应时间<30μs(提升38%)、超调<5%(降低71%)、参数摄动下误差<±0.4A(精度提升73%)。详细介绍了Simulink建模步骤,包括模糊规则设计(7语言变量、49条规则)、隶属度函数配置及自适应PI实现逻辑,并提供实机部署建议。仿真结果表明,该方法显著提升系统鲁棒性,特

MHD0815的博客 79

【LeetCode】24. 两两交换链表中的节点

本文介绍了链表两两节点交换的三种解法:迭代法、递归法和优化迭代法。迭代法通过维护三个指针(prev、first、second)逐步交换相邻节点;递归法采用自底向上策略处理子问题;优化迭代法利用多重赋值简化代码。三种方法的时间复杂度均为O(n),空间复杂度分别为O(1)、O(n)和O(1)。关键点在于正确处理节点引用关系,确保链表不断裂,并注意边界条件如空链表或单节点情况。

qq_32019341的博客 1123

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

#力扣 LeetCode24. 两两交换链表中的节点 @FDDLC

题目描述: 24. 两两交换链表中的节点 - 力扣(LeetCode) (leetcode-cn.com) 自测用例: [1,2,3,4] [] [1] [1,2] [1,2,3] [1,2,3,4,5] [1,2,3,4,5,6] Java代码: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * List..

LiuXingchang的博客 310

深度学习工具包 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 24 两两交换链表中的节点

LeetCode 24 两两交换链表中的节点 题目链接 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 输入:head = [1,2,3,4] 输出:[2,1,4,3] 示例 2: 输入:head = [] 输出:[] 示例 3: 输入:head = [1] 输出:[1] 用两个链表结点每次取两个指针调换位置即可,AC代码如下: 在这里插入代码片 ...

旺崽的博客 2577

力扣 24. 两两交换链表中的节点

本文仅仅简单讲解了《24. 两两交换链表中的节点》这一题目,对迭代法有了一定的了解

m0_51787573的博客 1365

24.力扣LeetCode_两两交换链表中的节点

本文介绍了两种交换链表中相邻节点的方法:三指针法和递归法。三指针法通过虚拟头节点统一处理边界条件,使用三个指针定位和交换节点对,逐步推进完成整个链表的交换。递归法则将问题分解为子问题:先处理后续节点对,再交换当前节点对,最后拼接结果。两种方法的时间复杂度均为O(n),但递归法空间复杂度为O(n)(递归栈),而三指针法为O(1)。三指针法适合大规模数据,递归法代码更简洁但要注意栈溢出风险。两种实现都正确处理了奇数长度链表的边界情况。

2401_82472941的博客 1171

golang力扣leetcode 24.两两交换链表中的节点

24.两两交换链表中的节点24.两两交换链表中的节点题解代码 24.两两交换链表中的节点 24.两两交换链表中的节点 题解 两种解法,第一种递归第二种迭代,链表题建议画图做 代码 package main type ListNode struct { Val int Next *ListNode } func swapPairs1(head *ListNode) *ListNode { if head == nil || head.Next == nil { return head }

清风 627

力扣LeetCode #24 两两交换链表中的节点(SwapPairs)

- 题目描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 注意:你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 来源:LeetCode - 示例 给定 1->2->3->4, 你应该返回 2->1->4->3. - 思路分析 思路其实很简单,就是指针一直改变指向并且用next串联起来,就是在指来指去的过程中容易指着指着后面就没了或者进入死循环。 - JAVA实现 public class SwapPairs { public static

weixin_49155948的博客 1009

【LeetCode: 24. 两两交换链表中的节点 + 链表】

【LeetCode: 24. 两两交换链表中的节点 + 链表】给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

Coder_ljw的博客 1370

LeetCode 24. 两两交换链表中的节点

本文介绍了如何通过虚拟头节点和节点删除/插入操作实现链表节点的两两交换。主要思路是:1)创建虚拟头节点简化头节点处理;2)遍历链表时定位相邻两个节点;3)删除第一个节点并插入到第二个节点之后;4)移动指针重复该过程。通过图解展示了交换过程,并提供了Java实现代码,使用虚拟头节点和指针操作高效完成节点交换,最终返回新链表头节点。

m0_73939789的博客 4209

LeetCode24. 两两交换链表中的节点

LeetCode24两两交换链表中的节点(非递归法+递归法)

weixin_42307601的博客 767

力扣24.两两交换链表中的节点

本文介绍了链表两两交换节点的算法实现。通过添加虚拟头节点简化操作,使用三个指针(cur、temp1、temp2)完成节点交换,确保不断链。算法处理奇数和偶数长度链表时,分别以cur->next->next=nullptr和cur->next=nullptr为终止条件。时间复杂度O(n),空间复杂度O(1)。代码示例展示了具体实现过程,包括指针操作和边界条件处理。

2302_78913144的博客 3467

【链表】【python】力扣24. 两两交换链表中的节点【超详细的注释和解释】

【链表】【python】力扣24. 两两交换链表中的节点 超详细题解

系统编程、网络编程 1244

【链表】LeetCode #24 两两交换链表中的节点

题目链接: LeetCode #24 两两交换链表中的节点 题目描述: #24. 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 通过次数135,890 提交次数204,775 分析: 两两交换,如果是奇数,最后一位不动。 如:1,2,3,4,5 交换后的结果应为 2,1,4,3,5 方案如下: 因为

Code_Yilia的博客 203
上一篇: 力扣 209.长度最小的子数组
下一篇: 力扣反转链表系列【25. K 个一组翻转链表】——由易到难,一次刷通!!!
JZihui
博客等级 码龄6年 170粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值