自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营总结篇

第一次接触卡哥的课程是在大二上,当时做N皇后的题目看到卡哥的视频觉得大受裨益,就想着有时间能够刷完卡哥录制的整期课程,后面有算法训练营的监督让我很幸运地坚持了六十天,学到了很多东西,像贪心算法、动态规划、单调栈以及在二叉树里使用BFS和DFS,都是一些很美妙的思路。这次一刷leetcode后面要去学学前端了,等到暑假有时间希望可以跟着卡哥二刷leetcode。学会算法后再去做题有些痛苦,但做出来的时候真的很爽!

2024-04-21 17:28:12 380

原创 代码随想录算法训练营第五十二天|leetcode第84题

本题要求柱状图中能勾勒出的最大矩形面积,使用单调栈,要求出单调栈栈顶元素左右比其小的第一个元素,因此使用递减栈,在遇到比栈顶元素小的元素时以栈顶元素为基准计算最大矩形面积。为了避免单调递减无法计算结果并且使所有元素都作为基准计算最大矩形面积,因此在数组的开头与结尾要加上元素0。

2024-04-20 19:03:32 477 2

原创 代码随想录算法训练营第五十一天|leetcode42、503题

本题要求接雨水的最大体积,因此需要设置单调栈,计算体积时要知道凹槽的宽度与高度,宽度就是栈中下标的差值再减一,高度则是凹槽左右两边高度的最小值减去凹槽底部的高度,其余操作与单调栈操作一致,最后求出的就是能接雨水的最大值。本题要求循环数组中下一个更大元素的值,由于数组循环设置,因此遍历时选择遍历2*nums.size(),在计算时i%nums.size(),最后求得的即为循环数组中下一个更大元素的值。

2024-04-20 11:39:04 349 2

原创 代码随想录算法训练营第五十天|leetcode496、739题

【代码】代码随想录算法训练营第五十天|leetcode496、739题。

2024-04-18 20:04:32 326

原创 代码随想录算法训练营第四十九天|leetcode516、647题

本题要求找字符串中回文子串的数目,因此设置dp数组,dp[i][j]的含义是从下标i到j的子串是不是回文串,因此递推公式为:在s[i]=s[j]时如果间距小于等于1或者间距大于1时dp[i+1][j-1]为回文串则dp[i][j]也为回文串。本题要求最长回文子串的长度,设置dp数组,dp[i][j]的含义是下标为i到j的子串中最长回文子串的长度,递推公式为:s[i]=s[j]时,dp[i][j]=dp[i-1][j-1]+2,不等时,dp[i][j]=max(dp[i-1][j],dp[i][j-1])。

2024-04-17 14:34:06 480

原创 代码随想录算法训练营第四十八天|leetcode72、583题

递推公式在word1[i-1]=word2[j-1]时,dp[i][j]=dp[i-1][j-1], 不相同时dp[i][j]=min(dp[i-1][j]+1,dp[i][j-1])。本题要求对两个单词操作使得两个单词剩余字母相等,与上题不同之处在于操作包括增添、删除和替换三种,因此在word1[i-1]!=word2[j-1]时递推式变为dp[i][j]=min(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]+1),也就是加上了替换的操作。

2024-04-16 14:50:41 304

原创 代码随想录算法训练营第四十七天|leetcode115、392题

本题要求s的子串与t相等的个数,因此设置dp数组,其中dp[i][j]的含义是i-1为下标的子串中包含j-1为下标的子串的个数,根据s[i-1]和t[j-1]是否相等来写递推公式,相等时递推公式dp[i][j]由dp[i-1][j-1](考虑s[i-1])和dp[i-1][j](不考虑s[i-1])构成,不相等时则等于不考虑s[i-1]时的递推式。

2024-04-15 17:13:15 346

原创 代码随想录算法训练营第四十六天|leetcode53、1035、1143题

本题要求公共最长子序列,不要求连续,需要设置二维dp数组,dp[i][j]的意义是以i-1为结尾的数组和以j-1为结尾的数组公共子序列的最长长度,可得递推公式:当text1[i-1]=text2[j-1]时,dp[i][j]=dp[i-1][j-1]+1,反之dp[i][j]=max(dp[i-1][j],dp[i][j-1])。本题的思路是要想直线不想交则需要求出最大公共子序列的长度,因为子序列一旦有位置不同的情况一定会有直线相交,因此相当于是上题的应用,代码基本没有改动。

2024-04-13 09:48:23 388

原创 代码随想录算法训练营第四十五天|leetcode300、674、718题

本题要求两个数组公共最长子数组的长度,因此要设置二维dp数组,dp[i][j]的含义是nums1[i-1]为结尾和nums[j-1]为结尾的最大公共子数组长度,因此可得递推公式:当nums1[i-1]=nums[j-1]时,dp[i][j]=dp[i-1][j-1]+1。本题与上题的不同之处在于要求递增子序列连续,因此需要将nums[i]与nums[i-1]比较,大于则dp[i]=dp[i-1]+1,小于则不做操作。

2024-04-12 20:37:01 268

原创 代码随想录算法训练营第四十四天|leetcode309、714题

本题对于买卖股票加入了冷冻期的限制,因此设置dp数组分为四个状态:买入股票状态、卖出股票状态(两天前卖出股票或前一天卖出股票一直没有操作)、今天卖出股票状态、冷冻期状态。本题与求买卖股票最大利润的区别仅在于加入了手续费,因此在不持有股票状态的递推公式中减去手续费即可。

2024-04-11 11:04:59 288

原创 代码随想录算法训练营第四十三天|leetcode123、188题

本题与前一天股票买卖的不同之处在于规定最多两次买卖股票,因此定义dp数组时要多几种情况,包括不操作、第一次持有、第一次不持有、第二次持有、第二次不持有五种,确定递推公式后,最终的结果一定是第一次不持有和第二次不持有的最大值,而由于第二次不持有的情况已经包含了第一次不持有的情况,因此最后一次不持有股票一定是最大值。本题与上题的区别在于买卖的次数为未知数,其实大同小异,利用上题的做法递推出规律,即奇数时不持有股票,偶数时持有股票,这样可以循环赋初值并循环进行递推。

2024-04-10 17:18:03 234

原创 代码随想录算法训练营第四十二天|leetcode121、122题

本题要求买卖股票一次获取最大利润,设置dp数组,其中dp[i][0]的含义是第i天持有股票的最大利润,dp[i][1]的含义是第i天不持有股票的最大利润,可得递推公式为dp[i][0]=max(dp[i-1][0],-prices[i]),dp[i][1]=max(dp[i-1][0]+prices[i],dp[i-1][1])。本题与上题的区别在于可以多次买卖股票,因此只有递推公式有所不同,变化如下: dp[i][0]=max(dp[i-1][0],dp[i-1][1]-prices[i]);

2024-04-09 17:31:56 578

原创 代码随想录算法训练营第四十一天|leetcode198、213、337题

本题将房子设置成了二叉树的结构,需要将树的遍历与动态规划相结合,对每个结点设置一个dp数组存取两个值,即偷该结点的最大金额和不偷该结点的最大金额,因此需要后序遍历将每个结点的dp数组的值进行相加,最后返回到根结点。本题设置dp数组,dp[i]的含义是长度在0-i的房间内可偷得的最大金额,故递推公式为dp[i]=max(dp[i-1],dp[i-2]+nums[i])。本题与上题类似,需要将房子排成环,因此需要区分取nums[0]和取nums[nums.size()-1]两种情况,在这两种情况下取最大值。

2024-04-08 17:36:01 315

原创 代码随想录算法训练营第四十天|leetcode139题

本题是完全背包问题,由于可以重复使用,因此需要先遍历背包再遍历物品,dp[i]的含义是在长度为i处能否从数组中找到元素组成。

2024-04-07 23:41:58 380

原创 代码随想录算法训练营第三十九天|leetcode70、279、322题

【代码】代码随想录算法训练营第三十九天|leetcode70、279、322题。

2024-04-07 20:05:28 193

原创 代码随想录算法训练营第三十八天|leetcode377、518题

本题是完全背包问题,要考虑物品放入背包的先后顺序,因此要先遍历背包再遍历物品。该题是完全背包问题,不需要考虑物品放入背包的先后顺序。

2024-04-07 18:42:18 468

原创 代码随想录算法训练营第三十七天|leetcode474、494、1049题

本题是0-1背包问题,设置dp数组,dp[i]的意义为0-i块石头装入背包的最大重量,最终因为要求最小重量所以背包容量为石头重量总和的1/2,可得递推公式dp[j]=max(dp[j],dp[j- stones[i]]+stones[i])本题是0-1背包问题,设置dp数组,dp[i]意义为装满容量为i的背包需要几种方法,可得递推公式dp[j]+=dp[j-nums[i]]。

2024-04-03 16:05:12 259

原创 代码随想录算法训练营第三十六天|leetcode416题

本题要求数组分成两个子集,子集的和是否相等,可以转化为0-1背包问题,即背包容量为数组元素和的1/2,物品大小即为元素大小。设置dp数组,dp[i]表示为背包容量为i能放置的元素大小,可知dp[i]为不放第i个元素和放第i个元素二者的最大值,由于单层数组的特殊性要从后向前遍历才能使得每一个元素只参与dp数组运算一次,最后如果dp数组中下标为target的元素值为target则为true,否则返回false。

2024-04-02 18:13:47 453

原创 代码随想录算法训练营第三十五天|leetcode96、343题

本题要求拆分正整数并求得乘积的最大值,首先设置dp数组,其中dp[i]的含义是拆分正整数i的乘积最大值,因此dp[i]递推公式为max(dp[i],max(j*(i-j),j*dp[i-j])),其中求得了拆分为两个正整数乘积和拆分为两个以上正整数乘积的最大值,而j是从1到i遍历,因此在dp[i-j]中会拆分出j的乘积值。因此,构建dp数组,dp[i]的含义是值为i的二叉搜索树有多少种,通过将1-i-1分别作为二叉树的根结点,利用上述的递推公式求出dp[i]的值。

2024-04-01 11:22:02 289

原创 代码随想录算法训练营第三十四天|leetcode62、63题

本题与上题相比多了障碍物,在处理过程中要加入两个细节,第一个是初始化第一行和第一列时遇到障碍物要将障碍物后面的数dp值设为0,因为已经不可能到达;第二个是在使用递推式的时候遇到障碍物不再使用递推式而是直接将该值置为0。本题设置dp数组的含义为走到第i行第j列的路径数,由于只能向下或向右走一格,可得递推式dp[i][j]=dp[i-1][j]+dp[i][j-1],还要对构建数组第一行和第一列进行初始化,因为只有一条路径可以到达。

2024-03-30 20:55:55 924

原创 代码随想录算法训练营第三十三天|leetcode70、509、746题

本题要求爬楼梯的最小花费,首先设置dp数组为第i个台阶上的花费,与上题类似递推式为dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]),也需要提前设置dp[0]和dp[1]。首先设置dp数组为爬到第i个台阶的方法数,因为每次只能爬一阶或两阶,可得递推式dp[i]=dp[i-1]+dp[i-2],同时要使i大于0需要提前定义dp[0]和dp[1]。

2024-03-30 20:44:40 305

原创 代码随想录算法训练营第三十二天|leetcode738题

本题要求返回小于等于给定数字且从最高位到最低位呈单调递增的数值,需要从最低位向最高位遍历,如果最低位比其前一位小则若要使改变后数值最大需要将前一位作减一操作并记录下当前位,在遍历结束后将记录的当前位之后的所有位数值都置为9,此时返回的数值即为所求。

2024-03-29 22:56:17 398

原创 代码随想录算法训练营第三十一天|leetcode56、435、673题

本题要求合并所有重叠的区间,故需要记录区间的左右边界,首先将数组按左边界进行排序,然后对数组进行遍历,如果当前元素的左边界小于记录的右边界则说明有交集,对右边界进行更新,更新为二者的最大值,如果当前元素的左边界大于记录的右边界则说明没有交集,需要将当前区间假如结果数组,遍历完数组后将最后一个区间加入结果数组。本题要求移除区间的最小数量,首先要将区间进行排序,将后序区间的左边界与前序区间的右边界比较,如果有交集则需要移除一个区间,并将后序区间的右边界变为二者的最小值以便进行下一次比较。

2024-03-27 16:22:58 262 1

原创 代码随想录算法训练营第三十天|leetcode406、452、860题

首先将给定的数组按照气球的左边界进行排序,如果下一个气球的左边界大于上一个气球的右边界则表明这两个气球没有重叠部分,所射箭数要加1,反之,需要判断该气球的下一个气球是否也与上面的气球重叠,这里要对右边界进行变换,取这两个气球右边界的最小值,如果重叠,则不用再将箭数加1。本题要求是否能给顾客正确找零,由于收的钱金额只有5、10、20三种,因此在遇到5元时直接收入,遇到10元需要找零5元,遇到20元优先找零10+5,如果,没有10元则找零5+5+5,每次找零后看5、10两种金额是否为负来判断能否正确找零。

2024-03-26 11:42:26 243

原创 代码随想录算法训练营第二十九天|leetcode134、135、1005题

本题要通过求解剩余油量能否满足路程中的所需油量判断能否通过所给路径一圈。本题要求按照每个孩子的评分高低分发糖果,可以从左向右遍历先确保右边孩子与左边孩子相比糖果数量的正确性,再从右向左遍历确保左边孩子与右边孩子相比糖果数量的正确性,本次遍历要对两次遍历的结果取最大值,最后将糖果数组求得数组和返回即可。本题要求对数组中进行k次取反求数组和的最大值,因此遍历数组时记录数组中最小的元素下标并对其取反是求数组和最大值的关键一步,在修改完k次元素值后算出来的数组和即为所求。

2024-03-25 14:44:54 373

原创 代码随想录算法训练营第二十八天|leetcode45、55、122题

本题要求是否能从数组的起始位置跳跃到最后一个位置,这需要通过跳跃的覆盖范围来判断,也就是在起始的覆盖范围内不断更新新的最大覆盖范围,如果覆盖范围超过数组长度则返回true,如果遍历完整个数组都无法超过数组长度则返回false。本题与上题的不同在于要求最小跳跃次数,在解题过程中要加入对下一步的最大跳跃范围的求解,如果当前跳跃最大范围没有到达数组末尾,则更新为下一步最大跳跃范围并对跳跃步数进行加一操作,如果超过了数组的大小则返回结果。

2024-03-24 17:49:16 349

原创 代码随想录算法训练营第二十七天|leetcode53、376、455题

本题要求给定数组的最大子数组的和,这里通过求得局部最优解获得全局最优解,也就是如果当前子数组和为0则重置从下一个数字开始计算,因为当前字数组会对下一个数字的子数组和产生负作用,如果局部子数组的和大于结果值则对结果值进行更新,最终保存的就是最大子数组的和。该题要求摆动子序列的最长长度,也就是将数组画成波形图后求波峰和波谷的数量和,这里涉及到只有波峰或波谷时出现平坡现象和有波峰和波谷时出现平坡现象,这里需要记录前中和中后两个数字的差值进行比较,并对前序差值更新为当前差值。

2024-03-24 12:56:22 328

原创 代码随想录算法训练营第二十六天|leetcode37、51题

本题将递归与回溯结合,重点在于如何判断该位置能否放置皇后,也就是该位置同一行、同一列、45度对角线和135度对角线是否已经放置了皇后,如果已经放置皇后则该位置不合法。因此,需要在每一行的每一列都试探性地插入皇后,如果合法则进行下一行的皇后插入,否则回溯倒退将皇后插入下一列。本题比上一题要求要更为复杂,需要在每个位置都插入数字,因此需要进行双层回溯,对数独的每一个空位置都进行判断是否合法,如果合法则添加数字并继续探索下一个位置,如果不合法则需要回溯。

2024-03-24 10:33:46 202

原创 代码随想录算法训练营第二十五天|leetcode46、47、491题

本题与上一题的不同在于数组中包含重复数字但是给出的全排列不能重复,这就要在上一题的基础上加入去重操作,首先将数组按升序排列,而后再新建一个used2数组进行结点值是否使用的标记,对树层进行去重,最后得到的结果就不会含有重复的子集。本题要找不少于两个元素的递增子序列,这里运用回溯和递归结合的方法,但是由于数组不是按递增或递减的顺序排列,因此在去重方面略有不同,需要记录同一个父结点的子结点的值是否相同,如果相同则需要跳过,否则就不满足递增的条件。

2024-03-20 12:29:55 379

原创 代码随想录算法训练营第二十四天|leetcode78、90、93题

该题要求有效的IP地址,与前一天求回文子串的思路一致,细节方面略微复杂一些,将回溯与递归结合,通过题意判定切割下来的字符串是否有效,由于有效的IP地址由四个整数构成,因此可以将加入的标点数量作为递归的终止条件,每当遇到一个有效的数字就将标点加入其后面的位置,回溯时将标点移除。本题要求给定整数数组的子集,也就是将构建的树的每个叶子结点的值收集起来加入结果数组。

2024-03-19 17:16:29 396

原创 代码随想录算法训练营第二十三天|leetcode39、40、131题

本题要将给定字符串分割回文子串,这里需要加入对字符串是否回文的判定,也是结合递归和回溯进行操作,如果回文则加入path数组,当切割点大于字符串长度时说明切割完成,得到一种切割结果,将其加入结果数组,否则,跳过这种切割方式对下一个字符的切割进行分析。本题与上一题要求类似,但是解集不能出现重复的集合,因此需要进行去重操作,也就是在树的同一层不能重复使用一个数字但是在树的同一个枝干可以出现同一个数字,这里需要使用used数组记录是否使用过这个数字,也就是在回溯操作中加入了used数组的判断。

2024-03-18 22:01:02 520

原创 代码随想录算法训练营第二十二天|leetcode17、216题

首先构建string数组将数组和字符串对应起来,在递归过程中用index表示传入字符串的下标,通过对字符串下标对应数字的处理也处理了数字对应的不同字母将其进行组合,最后当访问字符串下标到最后一个字符之后时结束递归返回结果。本题要找出相加之和为n的k个数的组合,这和上一篇的组合问题大同小异,也是运用回溯算法和递归相结合,在终止条件中要加上计算数组里的元素和这一操作,并且在剪枝操作中变为确定元素和是否大于n,若大于n则直接剪枝。

2024-03-16 12:15:19 684

原创 代码随想录算法训练营第二十一天|回溯算法、leetcode77题

回溯法可以抽象为树形结构,通过递归到达叶子结点收获结果,而后将叶子结点的值从结果集中弹出返回到树的上一层再继续搜索,这个过程就是回溯。回溯通常和递归搭配使用,是在递归结构中嵌套一层循环,在递归前处理结点,在递归后撤销处理结点的操作,为了使回溯算法更加高效,可以通过剪枝来去除一些不必回溯搜索的路径。本题要求给定范围内k个数的组合,因此可以结合递归和回溯将树形结构构建好,从加入目标数组元素的下一个元素开始递归,递归过后撤销操作,即为回溯,回到树形结构的上一层继续搜素,最终获取全部结果。

2024-03-16 11:04:25 722

原创 代码随想录算法训练营第二十天|leetcode108、538、669题

本题要对二叉搜索树进行裁剪,和前一天对二叉树进行结点删除不同,如果结点小于左边界,结点的右孩子可能在裁剪范围内;本题要将二叉搜索树转换为累加树,遍历顺序应该改为右中左,使用双指针法记录前一个结点的值,将当前结点的的值加上前一个结点的值即可,递归地从二叉搜索树右侧遍历到左侧就完成了结点值的相加。本题要将升序的数组转换为平衡二叉搜索树,根据二叉搜索树的特点,每次应该取升序数组的中间元素的数值作为根结点的值,这样可以使得二叉搜索树平衡,因此需要递归地分割数组进行结点的构造。

2024-03-15 13:25:02 724 1

原创 代码随想录算法训练营第十九天|leetcode235、450、701题

该题要求删除二叉搜索树的结点,操作与上一题类似,只是在递归法中对于删除结点的操作要更加复杂,结点类型分为五种:左空右空、左空右不空、左不空右空、左不空右不空、结点为空,针对这五种结点类型返回不同的结点,其中左不空右不空可以先化为左空右不空的类型再返回右子树根结点。本题要求二叉搜索树中两结点的最近公共祖先,相对于根结点这两个结点的位置有三种情况:全部在左侧、全部在右侧、位于两侧,因此迭代地遍历二叉搜索树,当位于两侧时返回该结点,该结点即为最近公共祖先。

2024-03-13 21:29:34 948

原创 代码随想录算法训练营第十八天|leetcode236、501、530题

本题要求二叉搜索树中的众数,即出现频率最高的结点,根据二叉搜索树的特性采用中序遍历,可以采用map存储数值,通过遍历map获得频率最高的结点,但这样会占据一定内存。可以通过双指针法记录每个结点数值出现的频率,并对最大频率进行更新,通过最大频率的变化对结果数组进行更新。本题要求两个结点的最近公共祖先,重点在于从下向上遍历二叉树,因此采用后序遍历使用回溯的方法,通过对左右子树的遍历将祖先结点递归地返回给根结点,最后得到最近的公共祖先结点。

2024-03-12 16:41:45 955 1

原创 代码随想录算法训练营第十七天|leetcode98、617、654、700题

本题要求合并给定的两颗二叉树,仍旧是通过递归调用对左右子树进行处理,通过判断结点是否为空来确定返回结点,如果两颗二叉树对应结点都不为空则加到其中一颗二叉树上去,最后返回其根结点。本题要验证二叉树是否为二叉搜索树,可以采用中序遍历方式遍历得到的数组如果单调递增则为二叉搜索树,为了节省空间可以将遍历过程中的结点最大值记录下来进行比较,递归的返回函数调用。本题要从二叉搜索树中求目标值对应结点,可以利用二叉搜索树的性质,如果大于结点值则递归在右子树搜索,反之在左子树搜索。

2024-03-11 23:39:03 1023 1

原创 代码随想录算法训练营第十六天|leetcode106、112、513题

本题要通过中序和后序序列构造二叉树,重点在于分割中序和后序数组进行递归调用,后序的最后一个数值为根结点,可将中序分为左中序和右中序,再根据左中序和右中序的长度将后序数组分为左后序和右后序。本题利用回溯的方法遍历根结点到叶子结点的所有路径,每经过一个结点将目标值减去结点值,当到达叶子结点时若目标值减为零则求出目标路径。本题要求最左下叶子结点的值,采用层序遍历的方法记录每一层最左侧的结点则覆盖后最后一层的最左侧结点即为所求。

2024-03-11 23:25:49 1015 1

原创 代码随想录算法训练营第十五天|leetcode110、257、404题

本题要求根结点到叶子结点的所有路径,此处采用前序遍历的方法,每次递归现将结点值加入路径数组再将左右子树进行递归遍历,最终到达叶子结点时将路径数组中的路径加入结果数组,代码实现过程中要注意回溯的使用,为了求出多条路径,在每加入一个结点并求出通过该结点的路径后应该将该结点值弹出,这样才能回溯到起始结点进行另一条路径的探查。本题要判断平衡二叉树,即求每个结点的左右子树深度之差是否超过一,因此本题可以使用递归的方法判断每一个结点的左右子树深度之差,借助求结点深度的辅助函数来判断是否为平衡二叉树。

2024-03-10 11:38:14 1127 1

原创 代码随想录算法训练营第十四天|leetcode104、111、222题

本题要求完全二叉树的结点个数,如果当做普通二叉树来求结点个数可以通过前序、中序、后序、层序遍历来解决,时间复杂度为O(n),如果要剪短程序运行时间则需要利用完全二叉树和满二叉树的特性,将完全二叉树分成数个满二叉树来计算,而满二叉树的结点个数为2的h次方-1,所以重点在于如何分成数个满二叉树,这里利用完全二叉树的特性,用两个指针一个遍历左下结点,一个遍历右下结点,如果高度相同则为满二叉树,最后利用递归求得左右子树的结点个数,加一即为完全二叉树的结点个数。

2024-03-09 16:37:36 1150 1

空空如也

空空如也

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

TA关注的人

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