自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 day43-数据结构力扣

深度优先搜索是一种用于遍历或搜索树或图的算法。其核心思想是尽可能深地探索分支,直到无法继续为止,再回溯到上一个节点继续探索其他分支。DFS通常通过递归或栈结构实现,适用于路径查找、拓扑排序、连通性分析等问题。广度优先搜索(Breadth-First Search, BFS)是一种用于遍历或搜索树或图的算法。其核心思想是从起始节点开始,逐层访问相邻节点,确保先访问所有相邻节点后再深入下一层。BFS通常用于寻找最短路径或解决与层级相关的问题。

2026-05-09 16:17:39 381

原创 MySQL-day1

本文介绍了MySQL数据库的基础知识,包括数据库基本概念、分类及特点。重点讲解了关系型和非关系型数据库的优缺点,MySQL的特性及安装配置。详细说明了SQL语言的分类(DQL、DML、DDL等)和基本语法,以及数据库的创建删除操作。还概述了MySQL的主要数据类型,包括数值类型、日期时间类型和字符串类型等。内容涵盖MySQL入门所需的核心知识点,适合零基础学习者快速掌握数据库基础。

2026-05-07 21:20:18 384

原创 day42-数据结构力扣

摘要: 本文介绍了两个单调栈应用的经典算法题:接雨水和柱状图最大矩形。接雨水问题通过维护递减栈,遇到更高柱子时计算凹槽储水量,公式为宽度 × (左右边界较小值 - 底部高度)。柱状图问题则用递增栈,找到左右第一个更矮的柱子确定矩形边界,面积计算为高度 × (右边界 - 左边界 - 1)。两者均通过栈动态处理下标,时间复杂度O(n)。核心在于利用单调性高效定位边界,转化为几何问题求解。

2026-05-07 16:38:27 213

原创 day41-数据结构力扣

摘要:本文介绍了单调栈的概念及其在解决LeetCode问题中的应用。单调栈分为递增和递减两种,用于维护元素的单调性。文章通过三个例题详细解析了单调栈的使用方法:739题用单调递减栈计算每日温度的下一个更高温度天数;496题通过哈希表和单调栈找到nums1元素在nums2中的下一个更大值;503题则利用单调栈处理循环数组,找到每个元素的下一个更大值。这些问题的解法都遵循相似的模式:维护单调栈结构,遍历数组时处理栈顶元素并更新结果。时间复杂度均为O(n),空间复杂度取决于栈的大小。

2026-05-07 08:45:00 379

原创 day40-数据结构力扣

这篇文章介绍了两个与回文相关的动态规划算法题。第一题是计算字符串中的回文子串数量,通过构建二维dp数组,判断每个子串是否为回文,最后统计所有回文子串的数量。第二题是求最长回文子序列的长度,同样使用动态规划方法,根据首尾字符是否相同来决定状态转移方程,最终返回整个字符串的最长回文子序列长度。两个问题都采用了类似的动态规划思路,但针对回文子串和回文子序列的不同特性设计了相应的状态转移策略。

2026-05-06 17:00:00 199

原创 day39-数据结构力扣

本文介绍了三道字符串动态规划问题的解法。115题"不同的子序列"使用二维DP数组统计s中出现t的子序列数,通过字符匹配情况递推。583题"删除操作"转化为求最长公共子序列(LCS),删除次数为两串总长减2倍LCS长度。72题"编辑距离"通过DP计算将word1转为word2的最小操作数,考虑替换、删除、插入三种操作。三题均采用二维DP,通过合理定义状态和递推关系求解,时间复杂度O(mn)。这些解法展示了动态规划在字符串处理中的典型应用模式。

2026-05-06 10:12:37 195

原创 LLM学习-day05

本文介绍了LLaMA2大模型的实现方法,主要包括模型结构和关键模块的代码实现。模型采用Decoder结构,包含词嵌入层、N个Decoder层(含RMSNorm归一化、LLaMA2Attention注意力机制和LLaMA2MLP前馈网络)、最终归一化层和输出头。关键模块实现包括:RMSNorm归一化、RoPE旋转位置编码、repeat_kv分组注意力机制等。代码使用PyTorch实现了完整的LLaMA2模型结构,包括配置类、各模块类以及前向传播过程,最后进行了简单的形状测试验证。该实现涵盖了LLaMA2的核心

2026-05-02 14:15:00 169

原创 LLM学习-day04

高质量数据是训练LLM的基础。Pretrain阶段需要海量文本数据,通常来自公开数据集如Common Crawl、Wikipedia、BooksCorpus等。数据需经过清洗、去重、过滤有害内容等预处理步骤。SFT阶段需要人工标注的高质量对话或指令数据。数据规模较小但质量要求极高,通常由专业人员编写或筛选。RLHF阶段需要人类反馈数据,包括排序或评分形式的偏好标注。

2026-05-01 09:45:00 161

原创 day38-数据结构力扣

本文总结了四道动态规划问题的解题思路和代码实现: 1143.最长公共子序列:使用二维dp数组,状态转移根据字符是否相等分为两种情况,时间复杂度O(mn)。 1035.不相交的线:该问题等价于求最长公共子序列,采用相同的动态规划解法。 53.最大子序和:定义dp[i]为以nums[i]结尾的最大子数组和,状态转移方程为dp[i] = max(nums[i], dp[i-1]+nums[i])。 392.判断子序列:通过二维dp判断s是否为t的子序列,当字符匹配时继承左上方状态,否则继承左侧状态。

2026-04-30 15:38:09 459

原创 day37-数据结构力扣

本文总结了三个动态规划问题的解法:1)最长递增子序列(LIS):使用一维dp数组,记录以每个元素结尾的最长递增子序列长度,通过双重循环比较元素大小,时间复杂度O(n²);2)最长连续递增序列:只需单层循环比较相邻元素,时间复杂度O(n);3)最长重复子数组:采用二维dp数组,记录两个数组前缀的最长公共连续子数组长度,通过双重循环比较元素是否相等来更新dp值。三个问题都需初始化dp数组,并通过遍历得到最终结果。

2026-04-29 14:15:00 266 1

原创 day36-数据结构力扣

本文总结了三种股票买卖问题的动态规划解法:1)最多k次交易问题,使用三维dp数组记录不同交易次数下的状态;2)含冷冻期问题,通过三种状态(持有、冷冻期、非冷冻期)处理买卖限制;3)含手续费问题,在卖出时扣除手续费。三种解法都采用动态规划思想,定义状态转移方程,初始化首日状态,然后按天递推计算,最终返回最后一天不持有股票的最大利润。这些解法展示了动态规划在股票买卖系列问题中的灵活应用,通过合理设计状态和转移方程,能有效处理各种交易限制条件。

2026-04-28 19:47:32 303

原创 Transformer 经典变体与主流大模型

摘要:BERT、GPT和T5是三大主流Transformer架构模型。BERT基于编码器结构,通过双向上下文理解和掩码语言模型(MLM)任务,擅长文本理解类任务;GPT采用解码器结构,以自回归方式生成文本,专注文本生成;T5统一使用编码器-解码器架构,将各类NLP任务转化为文本到文本格式。三者预训练目标各异:BERT使用MLM和NSP,GPT采用自回归建模,T5则通过前缀任务实现多任务统一处理。这些模型在计算资源需求、文本长度处理等方面存在共性局限,但共同推动了NLP从专用模型向通用预训练范式的转变。

2026-04-28 17:23:42 397

原创 day35-数据结构力扣

本文介绍了LeetCode上三道股票买卖问题的动态规划解法: 121题(单次交易):使用二维dp数组,dp[i][0]表示第i天持有股票的最大利润,dp[i][1]表示不持有的最大利润。通过比较持有/买入和不持有/卖出的状态转移,最终返回最后一天不持有股票的最大值。 122题(无限次交易):与121题类似,但买入时需考虑之前的利润(dp[i-1][1]-prices[i]),允许多次买卖。 123题(最多两次交易):扩展为5种状态,分别表示无操作、第一次持有/卖出、第二次持有/卖出。

2026-04-27 20:00:00 413

原创 day34-数据结构力扣

本文总结了"打家劫舍"系列问题的动态规划解法。198题是基础版,通过定义dp[i]为前i间房能偷的最大金额,递推公式考虑是否偷当前房屋,时间复杂度O(n)。213题是环形房屋版本,通过分解为两个线性问题(不考虑首或尾)取最大值解决。337题是树形版本,采用后序遍历,每个节点返回偷与不偷两种状态的最大值。三个问题都遵循动态规划的核心思想,通过状态转移逐步求解最优解,展示了从线性到环形再到树形结构的DP应用技巧。

2026-04-27 15:10:19 349

原创 day33-数据结构力扣

本文总结了力扣上三道动态规划典型问题的解法:零钱兑换(322)、完全平方数(279)和单词拆分(139)。三题都采用动态规划思想,通过定义dp数组表示目标状态(最少硬币数/平方数个数/能否拆分),利用递推公式逐步求解。核心思路包括:1)初始化dp数组(通常设0为基准值);2)遍历所有可能状态;3)通过递推关系更新dp值(如取最小值或判断条件成立);4)返回最终结果。其中零钱兑换和完全平方数属于完全背包问题,单词拆分则是字符串分割问题。解题时需注意边界条件和遍历顺序。

2026-04-25 08:45:00 236

原创 day32-数据结构力扣

这篇文章介绍了LeetCode上两道完全背包问题的解法:518.零钱兑换II和377.组合总和Ⅳ。对于零钱兑换II,使用动态规划求解组合数,定义dp[j]为金额j的组合数,递推公式为dp[j]+=dp[j-coin],遍历顺序是先硬币后金额。而组合总和Ⅳ则是求排列数,定义dp[i]为总和i的排列数,递推公式为dp[i]+=dp[i-num],遍历顺序是先目标值后数字。两题都初始化dp[0]=1,最终分别返回dp[amount]和dp[target]作为结果。关键区别在于遍历顺序决定了求的是组合还是排列。

2026-04-24 17:15:00 214

原创 day31-数据结构力扣

这篇内容总结了三个动态规划问题的解法: 1049.最后一块石头的重量II:转化为背包问题,求石头分成两堆的最小差值。使用二维DP记录前i块石头在容量j时的最大重量,最终结果为总重量减去两倍DP值。 494.目标和:通过正负号组合使数组和等于目标值。将问题转化为求特定和的方案数,使用二维DP记录前i个数和为j的方案数,注意处理边界条件。 474.一和零:在限制0和1数量的情况下选择最多字符串。作为二维费用的背包问题,使用DP记录i个0和j个1时的最大子集长度,倒序遍历更新状态。

2026-04-24 09:30:00 211

原创 day30-数据结构力扣

摘要:本文系统介绍了背包问题的动态规划解法,重点分析了0-1背包和完全背包两种基础形式。0-1背包要求物品只能选一次,状态转移方程为dp[i][j]=max(dp[i-1][j], dp[i-1][j-w[i]]+v[i]);完全背包允许重复选择,转移方程为dp[i][j]=max(dp[i-1][j], dp[i][j-w[i]]+v[i])。文章详细阐述了二维和一维DP的实现方法,特别强调一维数组需要倒序遍历防止重复选择。最后以416题为例,展示了如何将分割等和子集问题转化为背包问题求解。

2026-04-23 17:06:27 388

原创 day29-数据结构力扣

本文讨论了两道动态规划题目:不同路径(62题)和带障碍的不同路径(63题)。对于62题,使用二维DP数组,状态转移方程为dp[i][j]=dp[i-1][j]+dp[i][j-1],初始化首行首列为1。63题在62题基础上增加了障碍物判断,遇到障碍时路径数为0,初始化时需处理障碍情况。两个问题都通过填充DP表自底向上求解,最终返回右下角的值作为结果。代码实现时需特别注意边界条件和障碍物的处理逻辑。

2026-04-23 15:59:06 245

原创 day28-数据结构力扣

本文介绍了动态规划的基本概念和解题步骤,重点讲解了斐波那契数列、爬楼梯和最小花费爬楼梯三个经典问题的动态规划解法。文章提出动态规划五步曲:定义dp数组、确定递推公式、初始化、遍历顺序和打印验证。通过具体例题展示了如何应用这五步:斐波那契数列的递推关系F(n)=F(n-1)+F(n-2);爬楼梯问题转化为类似斐波那契的解法;最小花费爬楼梯问题则需考虑从不同台阶上来的最小花费。每个问题都给出了完整的Python实现代码,并强调了打印dp数组进行验证的重要性。

2026-04-22 20:31:12 401

原创 day27-数据结构力扣

本文包含两道算法题的解题思路和实现代码: 合并区间问题(LeetCode 56题): 先对区间按起始值排序,使重叠区间相邻 遍历时比较当前区间与结果中最后一个区间,重叠则合并(取结束值最大者) 时间复杂度主要由排序决定,为O(nlogn) 单调递增数字问题(LeetCode 738题): 使用贪心算法,从右往左检查数字 当发现前位大于后位时,前位减1,后续所有位设为9 通过字符串处理方便修改数字位 时间复杂度为O(n),n为数字位数 两题都展示了排序和贪心思想在算法问题中的应用。

2026-04-17 16:54:08 234 2

原创 day26-数据结构力扣

本文总结了三个区间相关问题的贪心算法解法: 452题用最少数量的箭引爆气球:按右边界排序,每次在右边界射箭,最大化覆盖后续气球。 435题无重叠区间:按右边界排序,保留结束最早的区间,计算最多保留的不重叠区间数。 763题划分字母区间:记录每个字母最后出现位置,遍历时更新当前片段最远位置,到达最远位置时切分。 三题都采用贪心策略,通过排序和局部最优选择实现全局最优解。452题和435题都按右边界排序,763题则利用字母位置信息进行分割。

2026-04-16 16:03:10 435

原创 day25-数据结构力扣

文章摘要:本文解析了力扣(LeetCode)中的四道贪心算法题目。134题加油站问题通过计算净油量和贪心选择起点;135题分发糖果需要两次遍历确保左右规则;860题柠檬水找零通过维护5/10美元数量实现最优找零;406题根据身高重建队列采用先排序后插入的策略。这些题目展示了贪心算法在不同场景下的应用,通过局部最优解逐步构建全局最优解。

2026-04-15 15:14:10 407

原创 day24-数据结构力扣

本文总结了四道LeetCode算法题的解题思路: 股票买卖II:通过捕捉所有上涨日差价获取最大利润,只需遍历数组累加所有正收益。 跳跃游戏:维护最大可达位置,遍历时检查当前位置是否可达,并更新最远跳跃距离,最终判断能否到达终点。 跳跃游戏II:在跳跃游戏基础上计算最小跳跃次数,通过跟踪当前跳跃边界和全局最远位置来优化跳跃策略。 K次取反最大化数组和:优先反转最小负数,剩余次数处理0或最小正数,确保总和最大化。包含对特殊情况的处理逻辑。 四题均采用贪心算法思想,通过局部最优选择达到全局最优解。

2026-04-15 09:39:29 397

原创 day23-数据结构力扣

本文介绍了贪心算法的基本原理和应用场景。贪心算法的核心在于每一步选择局部最优解,最终达到全局最优,不回头、不反悔、不预测未来。适用条件包括:局部最优能推出全局最优、无法举出反例、不能用动态规划等问题。文章通过三个力扣题目展示了贪心算法的实际应用:分发饼干(双指针策略)、摆动序列(统计正负交替次数)和最大子序和(Kadane算法)。解题步骤包括:拆解问题、确定局部最优解、执行选择并验证全局最优。强调贪心算法没有固定模板,需结合常识和反例验证。

2026-04-13 16:58:45 396

原创 day22-数据结构力扣

本文介绍了LeetCode中三道回溯算法题目:491.非递减子序列、46.全排列和47.全排列II的解题思路。491题通过回溯生成所有子序列,筛选出非递减且长度≥2的结果;46题使用回溯+标记数组生成所有不重复排列;47题在46题基础上增加去重判断。三题都采用经典回溯框架:做出选择、递归、撤销选择,通过不同条件控制结果收集。提交的Python代码展示了如何实现这些算法,其中标记数组和排序比较是处理重复问题的关键技巧。

2026-04-11 15:18:16 274

原创 day21-数据结构力扣

本文总结了力扣三道回溯算法题的解题思路:93题复原IP地址要求将字符串分割为4段0-255的数字,避免前导零,通过回溯法递归验证每段有效性;78题子集需要返回所有可能的子集组合,通过记录路径中间状态实现;90题子集II在78题基础上增加了去重要求,通过排序数组和路径检查来避免重复子集。三题都采用回溯框架,通过递归、剪枝和回溯操作遍历所有可能性,体现了回溯算法在组合问题中的典型应用模式。

2026-04-11 14:34:09 290

原创 LLM学习-day03

本文系统介绍了Encoder-Decoder架构及其在深度学习中的应用。首先概述了该框架的核心思想:通过编码器将输入序列转换为上下文向量,再由解码器生成目标序列。随后详细解析了编码器和解码器的实现细节,包括前馈神经网络、层归一化和残差连接等关键技术。文章还提供了完整的Transformer模型代码实现,涵盖嵌入层、位置编码、多头注意力机制等核心组件。最后展示了如何将各模块整合为完整的Transformer模型,并讨论了训练与推理阶段的处理流程。该架构广泛应用于机器翻译、文本摘要等序列到序列任务。

2026-04-11 08:30:00 372

原创 LLM学习-day02

注意力机制是深度学习中的重要技术,它通过权重分配让模型聚焦于输入的关键部分。核心原理包括查询(Q)、键(K)、值(V)的交互计算,其中缩放点积注意力公式为权重计算的基础。多头注意力机制通过并行计算增强模型表达能力,而自注意力机制则使模型能够捕捉序列内部的关联性。实现时需注意维度匹配、softmax归一化等技术细节,PyTorch等框架提供了便捷的实现方式。该机制显著提升了模型对长序列和复杂关系的处理能力。

2026-04-10 09:17:12 173

原创 day20-数据结构力扣

本文分析了LeetCode上三道组合/分割问题的解题思路与常见错误。39题组合总和的常见错误包括:重复组合、无限递归和效率低下,正确解法应使用start参数去重、减法优化和剪枝。40题组合总和II需要额外处理数组重复元素,通过排序和同层去重来避免结果重复。131题分割回文串的关键在于正确判断每个子串是否为回文。三题都采用回溯算法,但各有特点:39题可重复选元素,40题不可重复且需去重,131题需验证回文子串。正确解法都包含剪枝优化和合理的递归终止条件。

2026-04-09 16:01:30 418

原创 day19数据结构力扣

回溯算法学习笔记 回溯法是一种通过递归遍历所有可能解的算法,适用于组合、排列、子集等问题。其核心思想是将问题抽象为树形结构: 宽度:集合元素数量 深度:递归层数 算法模板: 定义void回溯函数 设置终止条件(收集结果) 遍历当前层元素,递归处理下一层后回溯 典型应用: 组合问题(如从n个数选k个) 字符串切割 子集生成 排列问题 棋盘类问题(N皇后等) 通过控制起始索引和路径选择,可以解决各类组合问题。示例代码展示了组合、数字字母映射等问题的实现方法。

2026-04-08 21:11:31 385

原创 LLM学习-day01

本文总结了NLP领域的关键任务与技术发展历程。主要NLP任务包括中文分词、子词切分、词性标注、文本分类、实体识别、关系抽取、文本摘要等,这些任务构成从基础处理到高级语义理解的完整流程。文本表示技术经历了从向量空间模型到深度学习模型的演进:早期VSM模型基于TF-IDF等统计方法,但存在数据稀疏问题;N-gram语言模型简单有效但难以处理长距离依赖;Word2Vec通过神经网络学习词向量,能捕捉语义关系;ELMo首次实现动态词向量,解决了多义词问题。这些技术的发展为各类NLP任务提供了重要基础支撑。

2026-04-08 09:15:00 387

原创 深度学习day06

其实深度学习是我们老师让我们学的东西,然后数据结构是我看师兄找工作学的。所以我一般数据结构更新的更勤,但是有多余的时间还是要把深度学习这些进度给补上。但我一般也是搞懂大概的东西,就是能看懂大概的原理,和这段代码在干什么具体数学推导没到那种每一步都会算的地步,还有让我直接敲深度学习代码我还是不会。

2026-04-07 16:15:36 529 1

原创 day18-数据结构力扣

本文总结了二叉树相关题目的解题思路:1.修剪二叉搜索树(669):利用BST特性递归处理,节点值超出范围时直接舍弃对应子树,在范围内则保留并递归修剪左右子树。2.有序数组转BST(108):采用分治思想,取数组中间值作为根节点,递归构建左右子树以保证平衡。3.BST转累加树(538):通过反序中序遍历(右-根-左)实现节点值的累加更新。所有解法都采用递归实现,重点在于把握二叉树的结构特性(如BST的有序性)和遍历顺序。虽然目前掌握程度还需加强,但这些典型题目为理解二叉树操作提供了良好基础。

2026-04-07 14:49:16 403

原创 day17-数据结构力扣

本文总结了二叉搜索树相关操作的实现方法: 235题:二叉搜索树的最近公共祖先(LCA),采用递归方法,通过比较节点值确定搜索方向,比普通二叉树解法更高效。 701题:二叉搜索树插入操作,重点在于找到正确插入位置(叶子节点),并注意递归返回时要重新连接子树。 450题:删除节点操作,处理五种情况:未找到节点、删除叶子节点、删除只有左/右子树的节点、删除同时有左右子树的节点(需处理子树合并)。 所有操作都遵循二叉搜索树的性质,通过递归实现,注意在操作后要正确连接子树以保持树结构。

2026-04-07 10:02:58 191

原创 day16-数据结构力扣

本文分享了三个二叉树相关算法题的解题思路: 530题:通过中序遍历二叉搜索树得到有序数组,然后计算相邻元素差值的最小值。 501题:遍历二叉搜索树得到数组,使用字典统计元素频率,返回出现次数最多的数字。 236题:采用后序遍历查找p和q节点的最近公共祖先,通过递归判断左右子树的结果来确定祖先节点。 这三个解法都利用了二叉树的遍历特性,分别通过前序、中序和后序遍历来解决问题,体现了树结构在算法中的典型应用。

2026-04-05 18:32:49 229

原创 day15-数据结构力扣

本文总结了二叉树相关算法题的解题思路。654题通过前序遍历递归构建最大二叉树,每次选取数组最大值作为根节点并分割左右子树;617题合并两棵二叉树时采用递归,处理节点值相加和子树合并;700题利用二叉搜索树特性递归查找目标值;98题通过中序遍历验证是否为二叉搜索树。这些题目展示了递归在二叉树问题中的典型应用,包括构建、合并、搜索和验证等操作。

2026-04-05 16:22:23 433

原创 day14-数据结构力扣

本文包含三道二叉树算法题的解题思路和代码实现:1. LCR045找树左下角的值:使用层序遍历,取最后一层第一个节点的值;2. 112.路径总和:基于257题方法,递归遍历所有路径并判断是否存在目标值;3. 106.中序与后序构造二叉树:通过后序确定根节点,分割中序序列,递归构建左右子树。每道题都提供了详细的分步思路分析和完整Python代码实现。

2026-04-05 14:09:23 240

原创 day13-数据结构力扣

本文总结了四道二叉树相关算法题的解题思路与实现方法:1. 平衡二叉树判断(110题):通过后序遍历递归计算子树高度差,若差值>1则返回-1;2. 二叉树所有路径(257题):前序遍历+回溯,记录根到叶子的路径并在返回时删除当前节点;3. 左叶子之和(404题):递归判断左子节点是否为叶子节点并累加其值;4. 完全二叉树节点计数(222题):直接前序遍历返回节点数组计算长度。四题均采用递归解法,涉及前序/后序遍历和回溯技巧。

2026-04-03 17:01:54 368

原创 day12-数据结构力扣

摘要:本文总结二叉树递归解题方法,重点分析4道典型题目。翻转二叉树(226)采用前序遍历交换左右子树;对称二叉树(101)必须后序遍历比较内外侧节点;最大深度(104)通过后序遍历求高度;最小深度(111)需特殊处理单边子树情况。核心在于理解不同遍历顺序(前序/后序)对解题的影响,以及正确处理空节点和递归终止条件。递归解法需明确参数、终止条件和单层逻辑三个要素。

2026-04-03 15:23:04 436

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除