leetcode-61. 旋转链表【链表】

leetcode 61. 旋转链表 61. 旋转链表 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3->NULL 示例 2: 输入: 0->1-&gt 阅读详情

目录

题目

 思路  

力扣风采


题目

61. 旋转链表

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。


示例 1:


输入:head = [1,2,3,4,5], k = 2
输出:[4,5,1,2,3]
示例 2:


输入:head = [0,1,2], k = 4
输出:[2,0,1]

提示:

链表中节点的数目在范围 [0, 500] 内
-100 <= Node.val <= 100
0 <= k <= 2 * 109

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/reverse-linked-list

思路

        1.首先遍历原始链表求出链表长度

         2.判断如果k是链表长度的整数倍,循环右移相当于没移,返回头节点。

         3.把单向链表变成环形链表(尾节点指向头节点) ,后序遍历判断条件断开

         4.断开链表尾节点指向此时为null

         5.返回链表此时表头节点

  完整代码

 public ListNode rotateRight(ListNode head, int k) {
        //链表长度为0直接返回
        if(head==null){return head;}
        ListNode temp1=head;
        //遍历 得到链表 长度
        int len=1;
        while(temp1.next!=null){
            temp1=temp1.next;
            ++len;
        }
        //如果k是len的整数倍,循环右移相当于没移
        int mod=k%len;
        if(mod==0){return head;}
        //把单向链表变成环形链表 ,后序遍历判断条件断开
        temp1.next=head;
        ListNode newHead=new ListNode();
        ListNode temp2=head;
        int count=0;
        while(temp2!=null){
            count++;
            if(count==(len-mod)){//断开链表尾节点此时为null
                newHead=temp2.next;
                temp2.next=null;
                break;
            }
           temp2=temp2.next;
        }
         return newHead;
    }

力扣风采

【中等】力扣算法题解析LeetCode61:旋转链表 本文介绍了如何旋转链表,将每个节点向右移动k个位置。关键思路包括:处理边界情况(空链表或k=0时直接返回),计算链表长度并成环,通过取模运算确定有效旋转步数,定位新尾节点后断开环并返回新头节点。代码实现清晰,时间复杂度为O(n)。适用于节点数在500以内、k值极大的场景。 阅读详情

相关推荐

DL-FWI基础入门培训视频学习1、2

DL-FWI基础知识

shengMio的博客 709

LeetCode 61 Rotate List

LeetCode 61 Rotate List Problem Description: 将链表循环右移n个结点 具体的题目信息: https://leetcode.com/problems/rotate-list/description/ Solution: 解题思路 循环右移就是将链表后n个结点搬到链表前面,原尾结点连接原链表头结点,后n个结点从头数的第一个结点为新的头结点,后...

萤火虫啊飞呀飞 233

避坑指南:Zabbix poller进程100%占用的5种常见原因及解决方案

本文深入剖析了Zabbix poller进程占用率高达100%的五大常见原因,包括监控项与进程数不匹配、不可达主机资源浪费、数据库性能瓶颈、监控项配置不合理以及版本缺陷。文章提供了从系统化诊断到针对性解决方案的完整指南,并重点介绍了如何通过优化zabbix_server.conf中的StartPollers等关键参数进行有效调优,帮助运维人员从根本上解决这一经典性能问题。

7z8x2c4v6b9的博客 250

链表:循环右移k个节点

    给定一个链表,循环向右移动k个节点。    如给定链表1-&gt;2-&gt;3-&gt;4-&gt;5,k=2,则返回循环右移2个节点后的链表:4-&gt;5-&gt;1-&gt;2-&gt;3。    思路:设置2个指针,前一个先向前移动k个节点,然后两个节点同步向前移,直到前一个指针到达链表末端,这时两个指针之间的部分就是需要循环移动到链表头的部分。    注意:这里k可以是任何值,...

Peanut 大本营 4140

保姆级!n8n 公众号自动化:从 0 搭 “写文案 + 生图 + 发草稿” 全流程

【摘要】本文介绍如何利用n8n搭建全自动公众号内容发布流程,涵盖AI文案生成、封面图制作到自动发布的全链路解决方案。通过对接OpenRouter大模型、阿里云百炼生图API及微信官方接口,实现从内容创作到发布的自动化。重点包括:1)n8n微信节点安装配置;2)大模型API授权与提示词优化技巧;3)图片生成与格式转换处理;4)公众号接口授权注意事项;5)草稿自动生成参数设置要点。特别提醒首次配置时需关闭自动发布功能以检查效果,避免格式错误导致发布失败。该方案无需复杂编程,适合运营人员快速搭建自动化内容生产流程

Jacket0603的博客 1592

c++多线程(1)------创建和管理线程td::thread

std::thread 是 C++11 标准库中用于创建和管理线程的核心类,定义在 <thread> 头文件中。它使得多线程编程变得简单、类型安全且跨平台。

jndingxin的专栏 647

链表——循环右移链表的后K个结点

题目:输入k和链表的头结点,循环右移链表的后K个结点。 For example: Given1->2->3->4->5->NULLand k =2, return4->5->1->2->3->NULL. 思路: 1.首先要找链表的倒数第K个结点; 2.因循环右移的K个结点仍是按原来顺序排列,可考虑用一个先进先出的容器即队列将后K个结点 存储,依次连接在链表首处;

jingsuwen1的博客 2823

【异常】API 速率限制报错问题全流程排查与解决指南 API rate limit reached. Please try again later.

摘要: 本文针对大模型API开发中常见的速率限制报错("API rate limit reached")提供全流程解决方案。首先解析该报错的本质是服务端对高频调用的保护机制,通过三步排查法确认根因:客户端请求频率超出账户阈值。提出三级解决方案:1)临时等待限流周期重置;2)升级付费账户提高调用配额;3)构建多模型容灾架构实现自动切换。建议生产环境优先采用容灾方案,通过备用API节点保障业务连续性,同时平衡不同模型服务的成本与性能。

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

算法-旋转链表(每个节点都向右移动n个位置,再重新返回该链表)

旋转链表

qq_26105397的博客 504

2026软考中级-软件设计师笔记(送最新视频教程)

核心口诀:运控存输输(运算器、控制器、存储器、输入、输出)例题(2019年上半年):核心公式:数字签名流程:数字证书作用:死锁4个必要条件:死锁判断公式:处理策略:程序设计语言的四大核心成分:顺序表操作(时间复杂度):链表操作(时间复杂度):核心思想:频率高的字符用短编码,频率低的用长编码 → 最小化总编码长度构造步骤(贪心算法):前提:有序表(升序/降序) 步骤:时间复杂度:O(log₂n) 例:查找中核心思想:用哈希函数将关键字映射到存储位置 哈希冲突:不同关键字映射到同一位置 → 用链地址法或开放定址

36万+

YOLOv12改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构

本文记录的是基于。采用了创新性的方法,通过精心平衡网络和来提升性能。本文将的设计优势融入YOLOv12中,提升YOLOv12的性能与效率,使其在目标检测任务中表现更为出色。本文配置了原模型中的共种不同大小的模型结构,以满足不同的需求。

Limiiiing的博客 963

61. 旋转链表【 力扣(LeetCode) 】

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

yyh520025的博客 1486

【35】软考软件设计师——设计模式代码填空(C++版)满分精讲|第5/6题二选一必考

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第35篇,聚焦下午选做题**第5/6题C++版设计模式代码填空**,与上一篇Java版形成双子配套,单题分值稳定12~15分。全文超4000字深度拆解C++独有核心考点:虚函数/纯虚函数、构造与析构函数规范、继承权限、模板类编程在设计模式中的应用;精讲单例、工厂、策略、观察者、适配器五大高频模式的C++专属代码写法,标注所有填空核心点位、语法陷阱、内存安全规范

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 543

leetcode61. 旋转链表

题目 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 (Given a linked list, rotate the list to the right by k places, where k is non-negative.) Example 1: Input: 1->2->3->4->5->NULL, k = 2 Output: 4->5->1->2->3->NULL Explanation: rotate

baiye 214

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

leetcode-61-旋转链表(java)

title: leetcode-61-旋转链表(java) date: 2019-09-15 15:25:33 categories: leetcode tags: leetcode 旋转链表 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: ...

weixin_42479155的博客 341

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LeetCode 力扣 61. 旋转链表

题目描述(中等难度) 将最后一个链表节点移到最前边,然后重复这个过程 k 次。 解法一 很明显我们不需要真的一个一个移,如果链表长度是 len, n = k % len,我们只需要将末尾 n 个链表节点整体移动到最前边就可以了。可以结合下边的图看一下,我们只需要找到倒数 n 1 个节点的指针把它指向 null,以及末尾的指针指向头结点就可以了。找倒数 n 个结点,让我想到了 19题,利用...

wind_liang的博客 885

深度学习工具包 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 61旋转链表

LeetCode 61旋转链表 题目简述:给定一个链表,旋转链表,将链表每个节点向右移动 k个位置,其中 k是非负数。 示例1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3->NULL 示例2:

XBlog 197

LeetCode 61:旋转链表

目录LeetCode题目描述解题 LeetCode 题目描述 解题      /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* rotateRight(ListNod

s_Shune 173

【LeetCode】61. 旋转链表

61. 旋转链表解题摘要 问题描述:给定链表头节点和整数k,将链表向右旋转k个位置。 核心思路: 闭环取模法(最优解): 遍历链表获取长度n并记录尾节点 计算有效旋转次数k = k%n 将尾节点连接头节点形成环 定位新尾节点(走n-k-1步) 断开环并返回新头节点 关键优化: 通过取模减少无效旋转(k = k%n) 时间复杂度O(n),空间复杂度O(1) 示例: 输入[1,2,3,4,5], k=2 → 输出[4,5,1,2,3] 输入[0,1,2], k=4 → 输出[2,0,1] 复杂度分析: 闭环取模

qq_32019341的博客 1178

61. 旋转链表 力扣 LeetCode

题目 61. 旋转链表 难度中等250收藏分享切换为英文关注反馈 给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。 示例1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3-&...

ZhaoXia_hit的博客 191

题解 力扣 LeetCode 61 旋转链表 C/C++

时间复杂度 O(N) 1.特殊情况判断:head == NULL 2.获取链表长度 length,该数据很有用,等下会用到好几次 3.k %= length,防止 k过大出现多轮重复操作 4.找到将来的末节点和头结点,记录将来的头结点后,将来的末节点->next = NULL 举个例子: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, NULL} rotate 3 >> {8, 9, 10, 1, 2, 3, 4, 5, 6, 7, NULL} 7 是将来的末节点,8 是将来的头结点

qwq_ovo_pwp的博客 543

力扣(LeetCode)61. 旋转链表

思路: ①先计算出head链表的长度 ②通过观察,发现题目的意思是从链表的末尾依次取出元素放置链表头部,那么这一定是个循环(参见示例2),所以在k>len的时候可以将k - n*len,那么新的k如果和len相等,那就刚好凑成一个循环,直接返回head即可,否则进入循环,找到第len-k个元素(头节点为1)设为p ③temp = p->next,q = p->next,对q进行...

Pwnpanda的博客 461

旋转链表leetcode61

旋转链表leetcode61 题目: 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL ...

amor_1的博客 108

leetcode 61旋转链表

旋转链表 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 leetcode61 示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例 2: 输入:head = [0,1,2], k = 4 输出:[2,0,1] 提示: 链表中节点的数目在范围 [0, 500] 内 -100 <= Node.val <= 100 0 <= k <= 2 * 109 这道题本质上不难,但是由于我很少写链表

qq_45304531的博客 169

Leetcode 61. 旋转链表 C++

Leetcode 61. 旋转链表 题目 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 测试样例 1. 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3->NULL 2. 输入:

weixin_43750513的博客 224
上一篇: leetcode-206. 反转链表【链表】
下一篇: leetcode-189. 旋转数组【数组】
Crazy Code Farmer
博客等级 码龄10年 315粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值