leetcode数组刷题总结

LeetCode Hot100 刷题笔记(2)—— 子串、普通数组、矩阵 一、子串 二、普通数组 三、矩阵 阅读详情

理论基础

数组是存放在连续内存空间上的相同类型数据的集合。

数组下标都是从0开始的。
数组内存空间的地址是连续的

704.二分查找

在这里插入图片描述
大家写二分法经常写乱,主要是因为对区间的定义没有想清楚,区间的定义就是不变量。要在二分查找的过程中,保持不变量,就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是循环不变量规则。
(左闭右闭)

class Solution {
    public int search(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;
        if (target < nums[0] || target > nums[right]){
            return -1;
        }
        while (left <= right){
            int mid = (left + right) / 2;
            if (target > nums[mid]){
                left = mid + 1;
            }
            if (target < nums[mid]){
                right = mid - 1;
            }
            if(target == nums[mid]){
                return mid;
            }
        }
        return -1;
    }
}

二分查找系列题目

重要理论 涉及到二段性的问题

给结论
详细过程见此
在这里插入图片描述
在这里插入图片描述

华为机考:交易系统的阈值 (二段性查找问题) *****

在这里插入图片描述
对于边界值的选取 每次对mid left right的更新,如何保证不进入死循环

public class Solution1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        String[] parts = line.split(" ");
        int size = parts.length;
        int[] nums = new int[size];
        for(int i=0;i<size;i++){
            nums[i] = Integer.parseInt(parts[i]);
        }
        int target = sc.nextInt();

        //左闭右开区间
        int left = 0;
        int right = (int)1e5;
       // int right  = 15;
        while(left<right){
            int mid = (left+right+1)>>1;
//                int mid = (left+right)>>1;
            if(check(nums,mid,target)){
                left = mid ;
            }else{
                right = mid-1;
            }
        }
        System.out.println(left);


    }
    //是否满足要求
    public static boolean check(int[] nums,int limit,int target){
        int sum = 0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]<=limit){
                sum += nums[i];
            }else{
                sum += limit;
            }
        }
        if(sum>target){
            return false;
        }else{
            return true;
        }
    }
}
153. 寻找旋转排序数组中的最小值

在这里插入图片描述

class Solution {
   //二分查找寻找数组的最小值
   public int findMin(int[] nums) {
       int left = 0;
       int right = nums.length - 1;
       while(left<right){
           int mid = (left + right)/2;
           if(nums[mid]>nums[right]){
               left = mid + 1;
           }else{
               right = mid;
           }
       }
       return nums[right];
   }
}
33. 搜索旋转排序数组 *****

在这里插入图片描述

class Solution {
    public int search(int[] nums, int target) {
        //在局部有序中使用二分查找
        int len = nums.length;
        if(len==0) return -1;
        if(len==1) return nums[0]==target?0:-1;
        int left = 0;
        int right = len - 1;
        while(left<=right){
            int mid = (left+right)/2;
            if(nums[mid] == target){
                return mid;
            }
            if(nums[0]<=nums[mid]){//左边有序
                if(nums[0]<=target && nums[mid]>target){//左闭右闭,左区间必须取等
                    right = mid - 1;

                }else{
                    left = mid + 1;  
                }
            }else{
                if(nums[mid]<target && target<=nums[right]){//同理 左闭右闭
                    left = mid + 1;
                }else{
                    right = mid - 1;
                }
            }
        }
        return -1;
    }
}
278. 第一个错误的版本

在这里插入图片描述
防止溢出:使用减法

/* The isBadVersion API is defined in the parent class VersionControl.
      boolean isBadVersion(int version); */

public class Solution extends VersionControl {
    public int firstBadVersion(int n) {
        int left = 1;
        int right = n;
        while(left<right){
            int mid = left+(-left+right)/2;
            if(isBadVersion(mid)){
                right = mid;
            }else{
                left = mid + 1;
            }
        }
        return left;
        
    }
}
35.搜索插入位置
34.在排序数组中查找元素的第一个和最后一个位置
69.x的平方根
367.有效的完全平方数

27.移除元素 (双指针)

在这里插入图片描述
在这里插入图片描述

class Solution {
    public int removeElement(int[] nums, int val) {
        int slow = 0;
        for (int fast = 0; fast < nums.length; fast++){
            if(nums[fast] != val){
                nums[slow] = nums[fast];
                slow += 1;
            }
        }
        return slow;
//双指针遍历到非val的值 slow+1
    }
}

相关题目推荐

26.删除排序数组中的重复项

在这里插入图片描述
双指针,慢指针指向新数组的元素,快指针用来遍历。只有当快慢指针不同时,进行元素复制。相同的话就进行指针的移动

class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums.length == 1){
            return 1;
        }
        int slow = 0;
        int fast = 1;
        while(fast<nums.length){
            if(nums[slow] == nums[fast]){
                fast++;
            }else{
                nums[slow+1] = nums[fast];
                slow++;
                fast++;
            }
        }
        return slow+1;
    }
}
283.移动零
844.比较含退格的字符串
977.有序数组的平方

209.长度最小的子数组(最小滑动窗口)

在这里插入图片描述
窗口内是什么?
如何移动窗口的起始位置?
如何移动窗口的结束位置?

  1. 窗口就是 满足其和 ≥ s 的长度最小的 连续 子数组。
  2. 窗口的起始位置如何移动:如果当前窗口的值大于s了,窗口就要向前移动了(也就是该缩小了)。
  3. 窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,也就是for循环里的索引。
class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int result = Integer.MAX_VALUE;//定义无穷大
        int left = 0;
        int right = 0;
        int sum = 0;
        while (right<nums.length){
            sum = sum + nums[right];
            while (sum>=target){
                result = Math.min(result,right-left+1);
                sum = sum - nums[left];
                left++;
            }
            right++;
        }
        if (result==Integer.MAX_VALUE){return 0;}
        return result;
    }
}

滑动窗口模板总结

最小滑动窗口

while j < nums.length:
    判断[i, j]是否满足条件
    while 满足条件:
        不断更新结果(注意在while内更新!)
        i += 1 (最大程度的压缩i,使得滑窗尽可能的小)
    j += 1

最大滑动窗口

while j < nums.length:
    判断[i, j]是否满足条件
    while 不满足条件:
        i += 1 (最保守的压缩i,一旦满足条件了就退出压缩i的过程,使得滑窗尽可能的大)
    不断更新结果(注意在while外更新!)
    j += 1

区别

最大滑窗是在迭代右移右边界的过程中更新结果,而最小滑窗是在迭代右移左边界的过程中更新结果

相关题目

904.水果成篮(最大滑动窗口)
class Solution {
    //哈希表+最大滑动窗口
    public int totalFruit(int[] fruits) {
        int left = 0;
        int right = 0;//左右边界
        int result = 0;//最终结果
        int count = 0;//水果类别个数
        Map<Integer,Integer> map = new HashMap<>();//哈希表为 水果种类:个数
        for (int i=0;i<fruits.length;i++){
            map.put(fruits[i],0);
        }
        while(right<fruits.length){
            //1. 判断是否有当前水果(不存在的话类别加1) 其放入果篮当中 更新map
            if (map.get(fruits[right])==0){
                count++;//没有当前水果,种类要加1
            }
            map.put(fruits[right],map.get(fruits[right])+1);//放入果篮 key:水果类别,value:在原来的个数基础上加1
            // 2. 看当前水果种类是否大于2
            while (count>2){
                //判断第一种类别的水果个数是否为1(等于1的话 类别减去1) 更新map
                if (map.get(fruits[left])==1){
                    count--;
                }
                map.put(fruits[left],map.get(fruits[left])-1);
                left++;//左边界左移
            }
            result = Math.max(result,right-left+1);
            right++;
        }
        return result;
    }
}
76. 最小覆盖子串

在这里插入图片描述

class Solution {
    //最小滑窗
    public String minWindow(String s, String t) {
        if(s.length() == 0 || s == null || t.length() == 0 || t == null){
            return "";//特殊情况
        }
        int left = 0;
        int right = 0;
        int start = 0;//记录最终结果
        int size = Integer.MAX_VALUE;//记录字符串的大小
        int count = t.length();//需要的数
        int[] need = new int[128];//记录需要的字符个数
        for(int i=0;i<t.length();i++){
            need[t.charAt(i)]++;
        }

        while(right<s.length()){
            char c = s.charAt(right);//取字符
            if(need[c]>0){//需要这个字符
                count--;
            }
            need[c]--;//入窗口
            //当count==0,进行处理
            if(count == 0){
                while(left<right && need[s.charAt(left)]<0){//need元素小于0 说明他不是t所需要的
                    need[s.charAt(left)]++;
                    left++;
                } 
                //记录最大值
                if(right-left+1<size){
                    size = right - left + 1;
                    start = left;
                }
                //need>=0的情况了
                need[s.charAt(left)]++;
                left++;
                count++;//与前面区别
            }
            //更新右边界
            right++;
        }
        return size == Integer.MAX_VALUE ? "" : s.substring(start,start+size);

    }
}
1004. 最大连续1的个数 III
3. 无重复字符的最长子串

59.螺旋矩阵Ⅱ(模拟题目,考察代码能力)

在这里插入图片描述
模拟画圆圈,注意区间统一就好

class Solution {
    public int[][] generateMatrix(int n) {
        int[][] result = new int[n][n];
        int loop = 0;//循环次数
        int i,j; //遍历的坐标
        int start = 0;//开始坐标 x和y相同
        int count = 1;

//1.循环画圈
        //边界全部采取左闭右开
        while (loop < n/2){
            //1.1 从左到右
            for (j = start;j < n-loop-1;j++){
                result[start][j] = count;
                count++;
            }
            // 1.2 从上到下
            for (i = start;i < n - loop-1;i++){
                result[i][j] = count;
                count++;
            }
            // 1.3 从右到左
            for (;j>loop;j--){
                result[i][j] = count;
                count++;
            }
            for(;i>loop;i--){
                result[i][j] = count;
                count++;
            }
            start++;
            loop++;
        }
//2.奇数个中间有点     
        if (n % 2 == 1){
            result[start][start] = count;
        }
        return result;
    }
}

相关题目

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

相关推荐

开启力扣刷题之路 >【数组】> 二分法

【代码随想录】力扣刷题攻略 <<< 这是大佬的git链接,感兴趣的小伙伴一起追随大佬的脚步,少走弯路噢。---- 搬运工是我了。。。 根据大佬总结的刷题攻略开始力扣刷题!冲鸭! 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入...

爱写bug的王六六 585

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

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

weixin_61779644的博客 2538

深入了解神经网络:构建人工智能的基石

这篇博客将为您解释神经网络的构造,让您能够理解这个令人着迷的领域的基本工作原理。神经网络是人工智能领域的关键技术,它们的构造基于神经元的灵感,并结合了数学、统计和机器学习的原理。输入可以类比为神经元的树突,而输出可以类比为神经元的轴突,计算则可以类比为细胞核。较好的方法就是预先设定几个可选值,通过切换这几个值来看整个模型的预测效果,选择效果最好的值作为最终选择。:这是神经网络的核心部分,包含多个层次的神经元。、神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向,跟训练时的数据流有一定的区别;

AI_dataloads的博客 2万+

【刷题】LeetCode力扣中C语言返回数组

在力扣中刷题,选择C语言,如果要求的返回值是数组,会发现给的函数参数中有一个returnSize 这个参数的意义是指定返回数组的大小,否则会输出空数组 参考: https://ask.youkuaiyun.com/questions/7411484 https://blog.youkuaiyun.com/m0_73633144/article/details/131505924返回数组时不能直接在局部函数中进行定义,定义局部变量a,返回的是a的地址,而a是一个局部变量,当函数调用结束时,局部变量中数据可能已经不复存在了。 解决方法

m0_47088198的博客 499

Windows平台无人机仿真:从零搭建SITL环境与QGC联调

本文详细指导了在Windows平台上从零搭建无人机软件在环(SITL)仿真环境,并与QGroundControl(QGC)进行联调的完整流程。通过使用Cygwin工具链,开发者可以在没有实体硬件的情况下,模拟运行ArduPilot飞控,并通过MAVLink协议连接QGC地面站进行全功能测试,为无人机软件开发提供了一个安全、经济的虚拟沙盒环境。

weixin_29239279的博客 407

ADS SerDes仿真实战:深入解析Tx_Diff均衡器(EQ)参数对眼图质量的影响

本文以ADS仿真平台为基础,深入解析了SerDes设计中Tx_Diff均衡器(EQ)参数对信号完整性的核心影响。通过实战演示,详细对比了去加重(De-emphasis)与FIR抽头系数两种调节模式,揭示了它们如何有效对抗信道损耗与码间干扰,从而显著改善眼图的高度、宽度与抖动性能,为高速串行链路设计提供关键调优思路。

weixin_29230901的博客 225

冲冲冲,力扣javascript刷题——数组总结

阶段性力扣刷题总结,为秋招做准备~

qq_41040989的博客 1448

手把手教你用OpenCalib完成激光雷达与相机联合标定:从数据准备到结果可视化

本文详细介绍了使用OpenCalib工具链中的lidar2camera模块完成激光雷达与相机联合标定的全流程,包括数据准备、标定命令执行、结果验证与可视化。通过实战指南,帮助读者掌握工业级标定技术,提升自动驾驶和机器人领域的传感器融合精度。

weixin_30872499的博客 398

力扣刷题篇之二维数组

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

m0_66076989的博客 638

STM32F103ZET6驱动57闭环步进电机(连线+代码)

一、设备: 1. STM32F103开发板 (普中F103的板子) 2. 57闭环电机带驱动 3. 24V/3A的直流电源,用于给电机驱动供电 简单说明:使用Keil5编程,主要使用了PWM波,外部中断和时间中断,按键控制电机使能和脱机并且控制PWM的周期,调节周期即调节电机的转速。 二、STM32开发板与电机驱动的连线: 1.PUL-、ENA-、DIR-与STM32的连接方法: 可以参考CSND的这个链接中的说明,使用共阴极接法:STM32F407-用TB6600驱动器驱动57步进电机(代码

baidu_39071234的博客 7430

从 SAP_FLP_USER 到项目落地:把 SAP S/4HANA 中的 SAP Fiori 授权体系真正讲透

SAP Fiori授权体系涉及前端访问、应用入口和后台业务对象三层权限,仅配置基础角色如SAP_FLP_USER无法满足实际业务需求。项目实践中常见用户能看到应用磁贴但无法访问数据的问题,多因授权模型设计不完整所致。SAP建议采用分层授权策略:基础层确保launchpad访问能力,业务层配置具体应用权限。管理员角色SAP_FLP_ADMIN需结合业务权限使用,测试时可临时配置S_SERVICE=*权限,但生产环境应遵循最小权限原则。完整的授权设计需参考SAP Fiori Apps Reference Lib

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 132

力扣刷题——数组

题解:给定一个 S 和一个 T,请问你 S 中是否存在一个子串,包含 T 中所有字符且不包含其他字符。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。的异位词的子串,返回这些子串的起始索引。给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。空格将字符串中的单词分隔开。数组中心下标是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。题解:同上,输入一个串s,一个串p,找到s中所有p的排列,返回它们的起始索引。

qq_43762876的博客 1322

RK3568平台(内存篇)DDR定频修改

如果需要DDR定频,则还需要注释掉其他多余的DDR频率,保留一个即可,例如注释掉opp-528000000、opp-1068000000、opp-1560000000,保留opp-2750000000则是定频最大频率。如果回退必须将 dmc_opp_table节点 的其他频率打开,否则系统无法选择到其他频率运行。ddr频点不对,先把ddr变频关掉,关闭后系统就不会一直重启了,以下是修改DDR频点的。rk3588修改定频节点在rk3588s.dtsi 的 dmc: dmc。

weixin_49303682的博客 1621

LeetCode刷题1929-简单-数组串联

LeetCode刷题1929-简单-数组串联,我敢说这是力扣最简单的一道题,最适合第一次刷力扣的人做

布小禅的博客 913

vue2/3 - [超详细] 实现企业微信扫码登录完整流程及代码,vue项目接入企业微信扫码登录功能教程,支持新跳页显示二维码或div容器里内嵌登录二维码(详细代码注释,一键复制开箱即用)

vue企业微信扫码登录,vue网页网站企业微信扫码登录教程,vue如何实现企业微信扫码登录功能,vue详细企业微信扫码登录功能实现,vue2实现企业微信扫码登录,前端vue企业微信扫码登录教程,vue pc电脑端企业微信扫码登录详细教程,vue项目中怎么做企业微信扫码注册登录,vue实现网站接入企业微信扫码登录,vue2做企业微信扫码登录的优质文章教程,vue网站对接企业微信扫码登录,vue企业微信扫码登录如何新开一页全屏显示登录二维码,vue企业微信登录二维码 内嵌在div容器里/跳页显示登录二维码,vu

✅ 精选推荐文章 5701

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

力扣刷题(一)——数组部分

使用练习 二级标题 字体 强调内容 双星号 斜体 单星号 删除线 双波浪线 有序列表 回车自动生成 1+空格 无序列表 加号+空格 Ctrl+T自动生成列表,选择对应的行列数 二级标题 分割线 三个-加回车 插入本地图片拖入即可 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NAb0TaMB-1631672845821)(C:\Users\Tunan\AppData\Roaming\Typora\

North_City_的博客 604

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

力扣刷题Hot100之普通数组

比如7个数k=3 由[0,1,2,3,4,5,6]->[6,5,4,3,2,1,0]->[4,5,6,0,1,2,3]比较(x+nums[i],nums[i])记录当前最大和,并且比较(x,max)记录数组最大和,遍历得到结果。如果先(0,2)(3,6)数组就是[2,1,0,6,5,4,3]->[3,4,5,6,0,1,2]其实反推很好想出来,假如每次循环一次就返回到原点那循环到k-1就结束,最小公约数为k。利用动态规划解决,遍历数组,用变量x记录前一位的最大和,max为数组最大和。

weixin_74567525的博客 1746

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

力扣刷题【数组篇】

力扣刷题 ------ > 数组篇 冲冲冲!!!

Hou_lang_LJ的博客 212

力扣数组刷题总结之c实现(常更)

数组;c语言;刷题总结

freeline的博客 2136

我的Leetcode刷题笔记:数组

我的Leetcode数组刷题指南

charlie114514191的博客 1363

力扣刷题-数组

力扣数组题型优解

ssy15211936768的博客 1347

leetcode刷题之轮转数组(超详解刷爆力扣)_力扣循环数组

都到这里了,相信大家都能理解这种思路了,但是这种每次向右边轮转数组,所有的值就要往后挪一次,时间复杂度较大,那我们有没有什么方法把他优化一下呢?😖😖😖我们看接下来的思路二。😃😃😃 到了这里我们完成了一半啦,接着往下看:👀👀👀最后将新数组的元素再拷贝一份放入原数组就可以了。但是如果K大于数组最大的长度的时候我们会发现出现问题,因此我们待会需要处理一下。 跟着思路走下去💪💪💪 最后我们发现竟然真的成功了,不愧是大神的方法,时间复杂度和空间复杂度都优化了。思路我们分析好了让我们直接上代

2401_88972074的博客 872

【日志】力扣刷题 -- 轮转数组

光看名字与《末路狂花钱》很像,实际灵感来源于《瑞克与莫迪》(忘记第几季第几集),爷孙二人来到一个即将因太阳爆炸而毁灭的星球上狂欢,这里正举办一个末日派对,一直到毁灭为止。剧情:大概上是一开始所有人都取出钱来花,印钞厂开始疯狂印钱,商品到最后都是免费的?——每天努力十五分钟,一年就努力了5475分钟,也就是91.25小时。(记得乘上0.7,这是扣去双休和法定的节假日的时间的)如果说GTA5是自由的,那这个就是释放天性,放纵的。创建新的数组就可以拿到原数组的数据,又可以对新数组进行排序。

wacanda的博客 829

leetcode刷题数组篇总结

文章目录前言leetcode刷题数组题型和技巧一.数组的二分查找二.双指针删除元素三.滑动窗口 前言 leetcode刷题数组: 这是我第一次开始认真做题和写博客,希望我能一直坚持下去,每天可以做一道题或者两道题然后写博客.养成刷题的习惯,基本上每一次做题我都能惊讶大佬的题解这么巧妙,有时候真的会感觉到智商上的不足,所以只能用量来锻炼自己.我这些题都是跟着别人的推荐做的顺序,从数组开始到后面的贪心,动态规划什么的.一步步做下去深入,坚持锻炼自己的算法能力.希望自己也能写出让别人看到后会惊讶的题解.

公仔面 417

【JAVA刷题初阶】刷爆力扣第六弹——数组

买卖股票的最佳时机 && 多数元素 && 删除有序数组中重复项

爱打酱油的新一的博客 807

力扣刷题35,数组——二分查找704相似题

属于简单题,第一次做,感觉题目就是比704多了一小步,但是自己的思路设计复杂了,多加了一个for循环,说明完全没有注意到二分查找的终止条件是什么。二分查找不仅用于查找,还能用于定位某种性质的边界点这类问题是典型的“寻找第一个 ≥ target 的位置”,属于二分查找的一个经典变体。解题思路:先明确是否找得到,找不到的时候要考虑临界情况是什么。

Betty_textbook的博客 825
上一篇: leetcode回溯算法刷题总结
下一篇: leetcode链表刷题总结
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值