LeetCode探索:初级算法(数组篇第一刷)

LeetCode初级算法练习——数组篇 数组篇26. 从排序数组中删除重复项给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。示例:给定数组: nums = [1,1,2], 你的函数应该返回新长度 2, 并且原数组nums的前两个元素必须是1和2 不需要理会新的数组长度后面的元素Given a sorted ar... 阅读详情

近来打算系统地学习一波数据结构与算法,因此根据LeetCode官方推出地经典面试题目清单开始刷题。本篇文章记录了初级算法中的数组篇,为了追求速度,我先大概地过一遍,每道题没有去分析多种解法,可能不是最优解,仅仅为我做题时的思路,若有什么错误的地方,欢迎大佬们指正哈!
ps:第一次写博客,格式之类的难免有所欠妥,还请大家谅解!

从排序数组中删除重复项

在这里插入图片描述解法:双指针
解析:题中数组是有序的,因此重复的值肯定是相邻的,且从第2个值开始才有可能重复,所以遍历数组1~n-1。使用变量cur来作为当前指针,若数组中相邻的值重复,cur保持不变;若数组中出相邻的值不同,则让当前值覆盖cur中的值,cur指向下一个位置。

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int n = nums.size();
        if(n == 0) return 0;
        if(n == 1) return 1;
        int cur = 1;
        for(int i = 1; i < n; i++) {  //从第二个值开始遍历
            if(nums[i] == nums[i-1]) {
                continue;
            } else {
                nums[cur++] = nums[i];
            }
        }
        return cur;
    }
};

时间复杂度:O(n) ,遍历一次数组
空间复杂度:O(1), 需要用到常量空间

买卖股票的最佳时机 II

在这里插入图片描述
解法:贪心算法
解析:所有上涨交易日都买卖(赚到所有利润),所有下降交易日都不买卖(永不亏钱)。

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int res = 0;
        for(int i = 1; i < prices.size(); i++) {
            if(prices[i] - prices[i-1] > 0) 
                res += prices[i] - prices[i-1]; 
        }
        return res;
    }
};

时间复杂度:O(n) ,遍历一次数组
空间复杂度:O(1), 需要用到常量空间

旋转数组

在这里插入图片描述
解法:使用反转
解析:这道题要求使用原地算法,因此不能开额外的数组。首先要注意的是k的大小,当k大于数组n的长度时,数组每移动n次,就回到了原来的位置,相当于没有改变位置。可以将k对n取模,减少不必要的时间消耗
ps:接下来我开始循环k次,一位一位地移动位置,结果超时了。后面看了官方题解,看到了一种捷径式解法:反转
超时代码:

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int n = nums.size();
        k = k % n;
        while(k--) {
            int t = nums[n-1];   //最后一位的值
            for(int i = n-1; i >= 1; i--) {
                nums[i] = nums[i-1];
            }
            nums[0] = t;
        }
    }
};

时间复杂度:O(k * n) ,遍历k次数组
空间复杂度:O(1), 需要用到常量空间

官方题解:

原始数组 ------------- : 1 2 3 4 5 6 7
反转所有数字后 ---- : 7 6 5 4 3 2 1
反转前 k 个数字后 - : 5 6 7 4 3 2 1
反转后 n-k 个数字后 : 5 6 7 1 2 3 4 --> 结果

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int n = nums.size();
        if(n == 0) return;
        k = k % n;
        reverse(nums.begin(), nums.end());
        reverse(nums.begin(), nums.begin()+k);
        reverse(nums.begin()+k, nums.end());
    }
};

时间复杂度:O(n) ,反转3次
空间复杂度:O(1), 需要用到常量空间

存在重复

在这里插入图片描述
解法:排序+遍历
解析:数组排序后重复值肯定是相邻的,做个简单的遍历判断即可

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        int n = nums.size();
        if(n == 0 || n == 1) return false; //0或1个元素必定不会重复
        sort(nums.begin(), nums.end());
        for(int i = 1; i < n; i++) {
            if(nums[i] == nums[i-1]) return true;
        }
        return false;
    }
};

时间复杂度:O(n * logn) ,排序的时间复杂度是O(n * logn) ,遍历的时间复杂度是O(n),整个算法的时间复杂度主要由排序决定 。
空间复杂度:O(1), 需要用到常量空间

ps:若想要使用空间换时间消耗的话,可以使用哈希表。

只出现一次的数字

在这里插入图片描述
解法:位操作
解析:异或大法好!利用异或的特性(对同一个数异或两次后,相当于没有操作),因此将初始值设定为零,只出现一次的数字对0异或,结果即为这个数字的值!!位运算还是挺重要的呀!有时间还是得多练习一下,可以减少很多麻烦

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int res = 0;
        for(int i = 0; i < nums.size(); i++) {
            res ^= nums[i];
        }
        return res;
    }
};

时间复杂度:O(n) ,遍历一次数组
空间复杂度:O(1), 需要用到常量空间

两个数组的交集

在这里插入图片描述
解法:哈希表
解析:建立<int,int>类型的哈希表,将第一个数组的值存放于哈希表中,键代表数组元素的值,值代表该元素值的数量

class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        vector<int> res;
        map<int, int> m;
        for(int i = 0; i < nums1.size(); i++) {
            if(!m.count(nums1[i])) m[nums1[i]] = 1; //键不存在,则赋初始值为1
            else m[nums1[i]]++;
        }
        for(int i = 0; i < nums2.size(); i++) {
            if(m.count(nums2[i]) && m[nums2[i]] > 0) //键存在,且数量大于0
                res.push_back(nums2[i]), m[nums2[i]]--;
        }
        return res;
    }
};

时间复杂度:O(max(n, m)) n是数组一的大小,m是数组二的大小
空间复杂度:O(n), 需要用到常量空间
ps:这道题我没有考虑去进阶,如n远远大于m时,可以为数组二建立哈希表,减少空间消耗,即空间复杂度可以优化为O(min(n, m)),小伙伴们如果有什么好的解法,欢迎在评论区分享emmmm

加一

在这里插入图片描述
解法:逆序遍历
解析:对数组进行原地修改,从最后一位开始逆序遍历,进行加一和取余操作,若当前值不为0,即不会产生下一个进位,就直接返回结果。考虑到99999这种连续进位的情况,当遍历整个数组后,还没有返回结果时,则在动态数组的第一位插入进位值1,返回最终结果10…00

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int n = digits.size();
        for(int i = n-1; i >= 0; i--) {
            digits[i]++;
            digits[i] = digits[i] % 10;
            if(digits[i] != 0) return digits;
        }
        digits.insert(digits.begin(), 1);
        return digits;
    }
};

时间复杂度:O(n) ,遍历一次数组
空间复杂度:O(1),原地操作,只需要用到常量空间

移动零

在这里插入图片描述
解法:双指针
解析:这道题我的解法与第一道有点类似,使用cur来作为当前指针,并使用cnt来记录当前0的个数
①若存在0,则将nums[i]覆盖为0
②若不存在0,nums[i]即为原始值,cur==i

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int cur = 0, cnt = 0;
        for(int i = 0; i < nums.size(); i++) {
            if(nums[i] == 0) {
                cnt++;
                continue;
            } else {
                nums[cur++] = nums[i];
                if(cnt > 0) nums[i] = 0;
            }
        }
    }
};

时间复杂度:O(n) ,遍历一次数组
空间复杂度:O(1),需要用到常量空间

两数之和

在这里插入图片描述
唠叨:作为LeetCode的第一道题,大家应该也是印象深刻吧!想当初因为不太习惯使用vector并且用函数来解决问题,第一道题拖了n久才去提交(还是使用暴力……),很多事情,从0到1,真的是很重要的一个过程了!比如这篇博客,写得一点都不香~
解法:遍历+哈希表
解析:此题我的解法是在遍历过程中判断哈希表中的值,实现一次遍历即可得出结果。键代表数组元素的值,值为该元素值的下标

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        map<int, int> mapp;
        vector<int> res;
        for(int i = 0; i < nums.size(); i++) {
            if(mapp.count(target-nums[i])) {
                res.push_back(mapp[target-nums[i]]);
                res.push_back(i);
                return res;
            }
            mapp[nums[i]] = i;   //这条语言必须放在if之后
            					 //防止因为相同的值,下标被重新覆盖
        }
        return res;
    }
};

时间复杂度:O(n) ,遍历一次数组
空间复杂度:O(n),哈希表的线性空间复杂度

有效的数独

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解法:遍历+哈希表
解析:将大宫格分为9个小的9宫格
建立三个哈希表数组
①行 :i
每次遍历时判断当前行的哈希表是否有相同的数
②列 :j
每次遍历时判断当前列的哈希表是否有相同的数
③宫格:(i / 3) * 3 + (j / 3)
每次遍历时判断当前宫格的哈希表是否有相同的数
借用一下leetcode的分析图:
在这里插入图片描述

class Solution {
public:
    bool isValidSudoku(vector<vector<char>>& board) {
        map<int, int> row[9], col[9], box[9];
        for(int i = 0; i < 9; i++) {
            for(int j = 0; j < 9; j++) {
                if(board[i][j] >= '0' && board[i][j] <= '9') {
                    int x = board[i][j] - '0';
                    //若其中任意一个条件,则不是有效的数独
                    if(row[i].count(x) || col[j].count(x) || box[(i/3)*3 + j/3].count(x))
                        return false;
                    row[i][x] = 1;
                    col[j][x] = 1;
                    box[(i/3)*3 + j/3][x] = 1;
                }
            }
        }
        return true;
    }
};

时间复杂度:O(1)
空间复杂度:O(1)
ps:这道题的时间复杂度和空间复杂度可能会有一些争议,但是81个单元格和27个map是固定的,也就是常数值,不会随输入的改变而改变

旋转图像

在这里插入图片描述
在这里插入图片描述
解法:自外向内,顺时针旋转四个值
解析:话不多说,看图
在这里插入图片描述
首先是最外一圈,旋转这4个数的值
①15 -> t ②16 -> 15 ③11 -> 16 ④5 -> 11 ⑤ t -> 5
依次类推……
在这里插入图片描述
在这里插入图片描述
再进入内圈
在这里插入图片描述

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int n = matrix.size();
        int cur = 0;     //当前圈第一个元素的行与列
        while(cur < n/2) {
            for(int i = cur; i < n-cur-1; i++) {
                int t = matrix[n-i-1][cur];  
                matrix[n-i-1][cur] = matrix[n-cur-1][n-i-1]; 
                matrix[n-cur-1][n-i-1] = matrix[i][n-cur-1];
                matrix[i][n-cur-1] = matrix[cur][i];
                matrix[cur][i] = t;
            }
            cur++;
        }
    }
};

时间复杂度:O(n^2),两重循环
空间复杂度:O(1),需要用到常量空间
ps:这道题还有另一种解法,但是相对没有那么容易想到
解法:转置+翻转
解析:转置矩阵(交换matrix[i][j] 和 matrix[j][i]的值),翻转每一行

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int n = matrix.size();
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < i; j++) {
                int t = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = t;
            }
        }
        for(int i = 0; i < n; i++) {
            reverse(matrix[i].begin(), matrix[i].end());
        }
    }
};

时间复杂度:O(n^2),转置和反转都需要用到n的平方
空间复杂度:O(1),需要用到常量空间

总结:

数组类型的问题目前用得比较多的解法是双指针、排序、位操作、哈希表和贪心算法,还是得具体问题具体分析,因此多实践是很重要的。由于线性代数学得不扎实,一些矩阵的特性不太了解,以后遇到旋转或移动的问题,没有思路的时候可以考虑一下倒置和反转hh。

leetcode刷题之轮转数组(超详解刷爆力扣) 大家好啊,我是小生啊🙈🙈🙈 我可没忘记带着大家刷题呢,嘿嘿兄弟姐妹们,我来啦😎😎😎让我们开始我们今天快乐的力扣刷题之旅吧,啦啦啦~~~ 😝😜😙 🌞🌞🌞 让我们一题多解,刷爆力扣,冲冲冲👊👊👊 力扣练习:轮转数组🏃🏃🏃一.🏠题目描述二.🏠题目分析三.🏠解决方法1.🚀思路一:化尾为头再循环挪动2.🚀思路二:开辟新空间优化时间3.🚀思路三:三次逆置(大神方法)四.🏠代码实现1.🚀方法一代码详解2.🚀方法二代码详解3.🚀方法三代码详解五. 🏠结语 一.🏠题目描述 嘿嘿,兄弟们,老规矩,直接看题: 🙊 🙊 阅读详情

相关推荐

Leetcode-How-What 力扣Leetcode刷题指南

Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the interview and the solutions to some Leetcode problems’. 怎样为准备面试机智聪明的刷题(高效刷题)以及一些题目的题解。 同 github 链接: https:/...

edwardwjz的博客 4520

Leetcode刷题1:初级算法

同另一篇文章,不过markdown用起来更方便。 1.1 反转字符串 知识点:就是双指针,对称进行交换,当p>q时结束。很简单。 坑:c++ STL库掌握不牢。 vector矢量的end()迭代器不是最后一个元素的指针,end()-1才是。 void reverseString(vector<char>& s) { if(s.size()<1) retu...

wbzhang233的博客 625

LeetCode卡片探索-初级算法

卡片探索-初级算法数组删除排序数组中的重复项买卖股票的最佳时机 II字符串链表树排序和搜索动态规划设计问题数学其他 LeetCode上知识卡片之初级算法的刷题记录 数组 删除排序数组中的重复项 难点在于原地删除的同时不想时间复杂度太高的话,可以考虑双指针。一个指针遍历数组判断是否为重复元素,一个指针用来搜集不重复元素并把他们安排到数组前列。 class Solution: def removeDuplicates(self, nums: List[int]) -> int: i

屏幕里的日与夜 1451

136.只出现一次的数字

LeetCode-cn 探索 初级算法 题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例2: 输入: [4,1,2,1,2] 输出: 4 代码: c语言: 解题思路:异或,对于...

baidu_35812512的博客 138

LeetCode初级算法笔记整理

LeetCode初级算法笔记整理,印象笔记导出的HTML格式文件。

S4-FPGA-K7板级原理图硬件实战

xilinx K7板级硬件实战

weixin_66510961的博客 6153

【力扣】189. 轮转数组

【力扣】189. 轮转数组

Danger的博客 703

windows10 + wsl2安装docker

一、安装wsl https://docs.microsoft.com/zh-cn/windows/wsl/install-win10 1.1以管理员身份运行powershell 1.2执行如下命令 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 1.3重启电脑 1.4 重启电脑后,如果需要安装wsl2, 则安装官方文档继续后续操作,因我...

happytree001的博客 1569

LeetCode(力扣)数组篇 JAVA刷题详解

是不是有许多小伙伴在刷力扣的时候感觉无从下手?从头按顺序开始刷的童鞋们可能会比较有感触,为什么才第四题就感觉很难了?没关系,本文将对力扣的 1-500 题中不需要会员的数据结构与算法题目(数据库与 shell 除外)进行分类,并推荐一个刷题的顺序。完全零基础可以刷题吗?不能,至少要基本掌握一门计算机语言的语法。但现在在网上随便搜一下就能搜到许多关于计算机语言的教程。当然,最好还是上一下正规的课程。刷题顺序很重要吗?重要。按照题目类别结构化地刷题的速度不仅更快,而且可以在刷完一类题之后进行总结。

weixin_61779644的博客 2538

科研绘图避坑指南:用PyMol制作期刊级蛋白-配体相互作用图(含氢键显示技巧)

本文是一份专业的科研绘图避坑指南,详细讲解如何利用PyMol软件制作符合期刊发表标准的蛋白-配体相互作用图。文章重点分享了从构图逻辑、精准选择到氢键等相互作用的艺术化表达技巧,并提供了视觉优化与期刊适配的终极参数设置,帮助科研人员产出兼具科学严谨性与视觉美感的专业图表。

weixin_29292431的博客 270

速腾RS-LiDAR-16激光雷达ROS环境搭建与点云可视化实战指南

本文提供速腾RS-LiDAR-16激光雷达在ROS环境下的完整搭建与可视化实战指南。从硬件连接、网络配置、驱动安装编译,到核心参数详解与Rviz点云可视化,手把手解决IP设置、坐标系对齐等常见问题,帮助开发者快速实现激光雷达三维点云数据的采集与显示。

weixin_29271263的博客 370

LeetCode刷题顺序

简介 是不是有许多小伙伴在刷力扣的时候感觉无从下手?从头按顺序开始刷的童鞋们可能会比较有感触,为什么才第四题就感觉很难了?没关系,本文将对力扣的 1-700 题中不需要会员的数据结构与算法题目(数据库与 shell 除外)进行分类,并推荐一个刷题的顺序。 完全零基础可以刷题吗? 不能,至少要基本掌握一门计算机语言的语法。但现在在网上随便搜一下就能搜到许多关于计算机语言的教程。当然,最好还是上一下正规的课程。 刷题顺序很重要吗? 重要。按照题目类别结构化地刷题的速度不仅更快,而且可以在刷完一类题之后进行总

qq_42548880的博客 8908

Flutter框架GetX从入门到精通第二篇:路由管理-告别繁琐的Navigator

Flutter框架GetX从入门到精通第二篇:告别繁琐的Navigator。本系列将带你从零开始,一步步掌握 GetX 框架的核心功能与实战技巧。

鹏多多的博客 170

力扣网-探索初级算法-数组篇

本篇博客题目来自力扣网,分组为初级算法下的数组。适合作为数组方面的练习。上面刷题测试用例真的丰富,总是有很多考虑不到的地方。第一遍做完了,很多解法都不是最优解。主要是分享下。 探索初级算法—力扣网链接 数组 题目的话打开上面的链接就可以看到,这里就不复述了。 从排序数组中删除重复项 public int removeDuplicates(int[] nums) { int...

小jinx的博客 1231

免费教你快速学会分析运算放大器电路(保证学会)

本文旨在学习如何快速简单地对运算放大器进行分析

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 1万+

华为OD机试双机位C卷-组装新的数组(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【组装新的数组】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 组装新的数组。

qq_45776114的博客 1145

【力扣篇一】数组30道题汇总

力扣,数组三十题。

成长之路 1722

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...

菜鸡力扣初级算法刷题记录(持续更新)

直接参考力扣官网初级算法面试题单本贴旨在记录自己的刷题感悟以供自己及后来者参考和回顾,也为刚开始刷题的小伙伴提供一个样本点刷题语言:c++

weixin_43500408的博客 1078

VC中sqlite的使用

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

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

力扣(leetcode)题目总结——数组篇

本系列文章初衷是为了按类别整理出力扣(leetcode)最经典题目,一共100多道题,每道题都给出了非常详细的解题思路、算法步骤、代码实现。因为力扣题目顺序是随机的,并没有按照算法分类,导致同一类型的算法强化训练不够。所以本系列文章就是来帮你完成算法分类,针对每种算法做强化训练,保证让你以后遇到题目直接秒杀。本篇文章主要是针对数组相关的算法题,一次性帮你搞定所有数组题!

weixin_46571171的博客 2527

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

<LeetCode天梯>“交个朋友&一起变强”之攻略集合部分三 | 初级算法 | Python

????作者简介:大家好,我是车神哥,府学路18号的车神???? ⚡About—>车神:从寝室到实验室最快3分钟,最慢3分半(那半分钟其实是等红绿灯) ????个人主页:应无所住而生其心的博客_府学路18号车神_优快云博客 ????点赞➕评论➕收藏 == 养成习惯(一键三连)???? ????本系列主要以刷LeetCode(力扣)网站的各类题为标准,实现自我能力的提升为目标⚡ ⚡希望大家多多支持????~一起加油 ???? 专栏《LeetCode天梯》 其他专栏: 《LeetCode天梯》 《

车手只需要车和手,压力来自轮胎 1443

LeetCode刷题笔记(一)——初级算法——数组

❤ 2021.8.26 ❤ 知道LeetCode这个东西有一两年了,一见到就很有学习的冲动,但是自己太菜,一直做比较简单的硬件开发,没怎么接触过算法数据结构之类的东西,当时选了最简单的第一题就被劝退了,甚至我都不知道答题窗口里的函数结构怎么用。。。 前两天师妹心血来潮要刷LeetCode,我趁机也刷一刷也好有人能讨论讨论。 →→→时光倒流! ❤ 2021.8.24 ❤ 今天的题目是 删除排序数组中的重复项 芜湖挺简单的,但是不会。。。 根据我多年来的考研经验,不会的题先背答案再说! 答

ooorczgc的博客 849

leetcode题解-初级算法数组篇(1-5题)

7月保研的夏令营已经告一段落了,面试中被问了很多算法的问题,感觉自己算法知识有些许薄弱(acm大神忽略),所以准备开始刷leetcode,顺便也为面试准备,因为想把刷leet里面的一些心得给记下来,便于之后复习,所以在这里开博。之后会按里面的篇章顺序进行更新,喜欢的可以给文章点一个赞,如果文章有任何问题或者有更好的解法可以在评论中给出,下面开始题解,本篇章为初级算法的数组篇(1-5题): 第一题...

纸鱼的笔记 1930

力扣刷题之数组篇

二分法、双指针

qq_51423963的博客 1169

你有多久没有坚持过一件事情了?如果没有就来刷一轮力扣LeetCode

选择一样你想做的事情,坚持21天。如果没有想好,那就先来刷一轮力扣吧!~

车手只需要车和手,压力来自轮胎 1360

力扣刷题篇之二维数组

本系列是个人力扣刷题,刷题顺序按照[力扣刷题攻略] 今天写了二维数组,要难一点,这篇文章的题目还要自己多敲敲最快的代码。

m0_66076989的博客 639
下一篇: LeetCode 200. 岛屿数量(深度优先搜索 || 广度优先搜索)
a_Gen!
博客等级 码龄9年 22粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值