自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 资源 (1)
  • 收藏
  • 关注

原创 GC Root

GC Root(垃圾回收根对象)是指那些被直接引用的对象,它们不会被垃圾回收机制回收。GC Root 对象通常是内存中的起始点,垃圾回收器从这些对象开始跟踪和清理内存中不再被引用的对象,以释放内存空间。这包括当前执行线程中的本地变量、方法参数和返回值等。本地方法栈是用于执行本地(非 Java)方法的栈,其中也包含对象引用。活动线程本身被认为是 GC Root,因为它们持有对线程本地变量表的引用,这些变量可能引用其他对象。

2023-09-06 12:51:25 313

原创 牛客网刷题-链表内指定区间反转

问题描述将一个链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 ,空间复杂度 。例如:给出的链表为1→2→3→4→5→NULL返回 1→4→3→2→5→NULL注意:给出的 满足以下条件:链表长度1≤m≤n≤链表长度示例示例1输入{1,2,3,4,5},2,4输出{1,4,3,2,5}解决思路思路根据m大小,先确认前置节点;倒置m-n区间的节点。这里主要是一些节点的互相指,容易乱,这里通过一个图展示了两个节点互换的过程。代码实现// 思路1pub

2021-03-16 20:23:37 579 1

原创 牛客网刷题-矩阵的最小路径和

问题描述给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。示例示例1输入[[1,3,5,9],[8,1,3,4],[5,0,6,1],[8,8,4,0]]输出12解决思路思路动态规划(1)当横坐标为0的时候,dp[i][0] = dp[i - 1][0] + matrix[i][0](2)当纵坐标为0的时候,dp[0][i] = dp[0][i - 1] + matr

2021-03-15 09:22:14 308

原创 牛客网刷题-出现次数的TopK问题

问题描述给定String类型的数组strArr,再给定整数k,请严格按照排名顺序打印 出次数前k名的字符串。如果strArr长度为N,时间复杂度请达到O(NlogK)输出K行,每行有一个字符串和一个整数(字符串表示)。你需要按照出现出现次数由大到小输出,若出现次数相同时字符串字典序较小的优先输出示例示例1输入[1,4,1,6]输出[4,6]解决思路思路这里主要是运用了异或^和与& 这两个运算的性质(1)异或^:相同为0,不同为1,两个相同的数字异或为0(2)与

2021-03-13 16:15:05 505 4

原创 牛客网刷题-数组中只出现一次的两个数字

问题描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。示例示例1输入[1,4,1,6]输出[4,6]解决思路思路这里主要是运用了异或^和与& 这两个运算的性质(1)异或^:相同为0,不同为1,两个相同的数字异或为0(2)与&:除了1&1,0&0,0&1,1&0均为0思路:(1)将数组所有的数字进行异或运算,得到了两个只出现一次的数字的异或结果(2)根据异或结果和与运算,找到第

2021-03-10 09:30:21 147 2

原创 牛客网刷题-判断回文数

问题描述给定一个字符串,请编写一个函数判断该字符串是否回文。如果回文请返回true,否则返回false。示例示例1输入“absba”输出true解决思路思路1.通过首尾对比的方式判断。代码实现// 思路1public class Solution { public boolean judge (String str) { if (str == null || str.length() == 0 || "".equals(str)) {

2021-03-09 23:41:45 146 1

原创 牛客网刷题-二叉树的最大深度

问题描述求给定二叉树的最大深度,最大深度是指树的根结点到最远叶子结点的最长路径上结点的数量。示例示例1输入给定的二叉树是{3,9,20,#,#,15,7},输出3解决思路思路深度优先搜索【PS:使用递归】二叉树的最大深度可以通过深度优先搜索遍历的方式去计算。递归的解析:终止条件: 当 root​ 为空,说明已越过叶节点,因此返回 深度 0 。递推工作: 本质上是对树遍历。计算节点 root​ 的 左子树的深度 ,即调用 maxDepth(root.left);

2021-03-09 08:54:24 124

原创 牛客网刷题-求二叉树的层序遍历

问题描述给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)示例示例1输入给定的二叉树是{3,9,20,#,#,15,7},输出[[3],[9,20],[15,7]]解决思路思路广度优先搜索【PS:借助队列】二叉树的层级遍历可以通过广度优先搜索的方式实现,广度优先搜索可以借助队列实现。代码实现// 思路1:归并排序public class Solution { public ArrayList<ArrayList<

2021-03-08 23:25:06 181

原创 牛客网刷题-单链表的排序

问题描述给定一个无序单链表,实现单链表的排序(按升序排序)。示例示例1输入[1,3,2,4,5]输出{1,2,3,4,5}解决思路思路归并排序(1)找到链表的中点,以中点为分界,将链表拆分成两个子链表。【寻找链表的中点可以使用快慢指针的做法,快指针每次移动 2 步,慢指针每次移动 1 步,当快指针到达链表末尾时,慢指针指向的链表节点即为链表的中点】(2)对两个子链表分别排序。(3)将两个排序后的子链表合并,得到完整的排序后的链表。【相当于合并两个有序的链表】代码实现

2021-03-08 09:00:18 231

原创 牛客网刷题-平衡二叉树

问题描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。示例示例1输入{1,2,3,4,5,6,7}输出true解决思路思路深度优先遍历:通过递归的方式深度优先遍历,找左右子树最高的高度,然后比较代码实现// 思路1:线性表public class

2021-03-07 21:40:19 79

原创 牛客网刷题-在二叉树中找到两个节点的最近公共祖先

问题描述给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。示例示例1输入[3,5,1,6,2,0,8,#,#,7,4],5,1输出3解决思路思路深度优先搜索遍历:通过递归的方式深度优先搜索遍历,当发现节点的值与输入的值相等时返回节点,判断找到的左节点和右节点是否同时不为空,不为空则找到最近的公共祖先。代码实现// 思路1:深度优先搜索遍历public class Solution { public int lo

2021-03-07 21:18:51 244

原创 牛客网刷题-最长回文子串

问题描述对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。给定字符串A以及它的长度n,请返回最长回文子串的长度。示例示例1输入“abc1234321ab”,12输出7解决思路思路遍历数组:遍历数组分别判断两种情况,aa的情况以及aba情况的最长长度。代码实现// 思路1:遍历数组public class Solution { public int getLongestPalindrome(String A, int n) {

2021-03-07 21:04:30 239

原创 牛客网刷题-删除链表的倒数第n个节点

问题描述给定一个链表,删除链表的倒数第n个节点并返回链表的头指针示例示例1输入1->2->3->4->5, n= 2输出1->2->3->5解决思路思路双指针法:先让指针1走n步,然后指针1和2同时走,当指针1为空时,指针2走到了倒数第n个节点。这里因为node节点只有next指针,所以我们最好走到倒数n-1个节点,方便删除倒数第n个节点。代码实现// 思路1:双指针法public class Solution {

2021-03-07 18:19:32 177

原创 牛客网刷题-找到字符串的最长无重复字符子串

问题描述给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同)。示例示例1输入[2,3,4,5]输出4解决思路思路双下标法:start为元素不重复的起始节点,end为结束节点,不断更新max值代码实现// 思路1:线性表public class Solution { public int maxLength (int[] arr) { HashMap<Integer,Integer> map = n

2021-03-05 15:21:23 173

原创 牛客网刷题-重排链表

问题描述将给定的单链表 L: L0→L1→…→L{n-1}→Ln重新排序为:L0→Ln →L1→L{n-1}→L2→L{n-2}→…L要求使用原地算法,不能改变节点内部的值,需要对实际的节点进行交换。示例示例1输入{10,20,30,40}输出{10,40,20,30}解决思路思路线性表:因为链表没有下表,我们可以现将链表遍历一遍,存储到线性表中,然后再重排序链表中点+链表逆序+合并链表:先查找链表的中点,将链表分开,后半截链表逆序,然后合并两个两表,即可重排序代码实

2021-03-05 14:25:03 550

原创 牛客网刷题-最大正方形

问题描述给定一个由0和1组成的2维矩阵,返回该矩阵中最大的由1组成的正方形的面积示例示例1输入[[1,0,1,0,0],[1,0,1,1,1],[1,1,1,1,1],[1,0,0,1,0]]输出4解决思路思路暴力法:暴力求解,当碰到1,则以当前坐标为左上节点,预估以该左上节点所组成的正方的最大长度,依次判断每个坐标值是否为1动态规划:使用额外的dp数组记录以该节点为右下角节点的最大长度(1)如果该位置的值是 00,则 dp(i,j)=0,因为当前位置不可能在由 1 组成的

2021-03-02 19:38:58 440 1

原创 牛客网刷题-N皇后问题

问题描述N皇后问题是指在N*N的棋盘上要摆N个皇后,要求:任何两个皇后不同行,不同列也不再同一条斜线上,求给一个整数N,返回N皇后的摆法数。示例示例1输入8输出92解决思路思路回溯法:要保证n个皇后不同行,不同列,不同斜线,只需要满足下面3个条件即可(1)N个皇后不同行,通过s1存储该行上的皇后(2)N个皇后不同左上角如图斜线方向,通过s2存储该方向的皇后。我们会发现位于统一斜线上的坐标满足,x坐标和y坐标的和相等。例如:(1,0) (0,1)在同一斜线上,和均为1

2021-03-02 10:47:08 385

原创 牛客网刷题-求平方根

问题描述实现函数 int sqrt(int x).计算并返回x的平方根(向下取整)示例示例1输入2输出1解决思路思路二分法:三种情况mid * mid <= x && (mid + 1)*(mid + 1) > x : 平方根符合条件(因为这里mid是向下取整数)mid * mid < x :取左测空间mid * mid > x :取右测空间代码实现// 思路1public class Solution {

2021-02-26 17:12:38 183

原创 Mac实用小技巧-alfred 集成idea

alfred 集成idea效果图不说废话,线上效果图????要求You need Node.js 10+ and Alfred 3.5+ with the paid Powerpack upgrade.步骤1、安装node.js(如果安装,请跳过)安装node.js,直接在官网下载安装即可https://nodejs.org/en/npm的全新问题可以直接设置最高权限 sudo chown -R $USER /usr/local 【不一定成功,一般会有权限问题,可以跳过】修改目录

2021-02-26 15:44:45 6102 6

原创 牛客网刷题-子数组的最大累加和问题

问题描述给定一个数组arr,返回子数组的最大累加和(题目保证没有全为负数的数据)例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12。示例示例1输入[1, -2, 3, 5, -2, 6, -1]输出12解决思路分析通过遍历累加的方式可以求和,累加和与当前值比较,取大的代码实现// 思路1public class Solution { public int maxs

2021-02-24 23:42:54 146

原创 牛客网刷题-岛屿数量

问题描述给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。岛屿: 相邻陆地可以组成一个岛屿(相邻:上下左右) 判断岛屿个数。示例示例1输入[[1,1,0,0,0],[0,1,0,1,1],[0,0,0,1,1],[0,0,0,0,0],[0,0,1,1,1]]输出3解决思路分析遍历数组,将相邻的岛屿的置为1(可以通过dfs或bfs的方式),然后继续判断。方法dfs:从一个为1的根节点开始访问,从每个相邻1节

2021-02-23 23:35:56 700 1

原创 牛客网刷题-容器盛水问题

问题描述容器最多能称多少水,因为容器的高度是一个数组,我们可以通过遍历数组,计算每一格子的盛水量,累加得最高的盛水量。示例示例1输入[3,1,2,5,2,4]输出5解决思路分析容器最多能称多少水,因为容器的高度是一个数组,我们可以通过遍历数组,计算每一格子的盛水量,累加得最高的盛水量。方法暴力求解:遍历元素,以当前元素为基准,向左找最高的高度leftHeight,向右找最高的高度rightHeight,计算当前格子的盛水量:water=min(leftHeight, r

2021-02-23 17:14:40 353 1

原创 Mac实用小技巧-iterm2 rz和sz指令的支持

iterm2 rz和sz指令的支持1、安装lrzszbrew install lrzszs2、配置相关的脚本文件目录cd /usr/local/bin 脚本文件获取通过网络获取wget https://raw.github.com/mmastrac/iterm2-zmodem/master/iterm2-send-zmodem.sh wget https://raw.github.com/mmastrac/iterm2-zmodem/master/iterm2-recv-zmodem.

2021-02-23 11:31:43 308

原创 牛客网刷题-设计LRU缓存结构

问题描述题目描述设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1)某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。若opt=1,接下来两个整数x, y,表示set(x, y)若opt=2,接下来一个整数

2021-02-22 22:43:28 273 5

原创 牛客网刷题-用两个栈实现队列

问题描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。栈:先进后出队列:先进先出示例示例1push:1,2,3pop:3,2,1解决思路分析因为栈跟队列出入的顺序是相反的,所以我们可以借助两个栈解决问题,stack1负责存储push的数据,stack2负责在pop操作的时候,将statk1的输入依次压入stack2,这样出栈的顺序就变成了出队列的顺序。代码实现// 思路1public class Solution { //

2021-02-21 16:13:57 315 10

原创 牛客网刷题-设计getMin功能的栈

问题描述实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。有三种操作种类,op1表示push,op2表示pop,op3表示getMin。你需要返回和op3出现次数一样多的数组,表示每次getMin的答案1<=操作总数<=1000000-1000000<=每个操作数<=1000000数据保证没有不合法的操作输入描述:输入一个二维数组输出描述:输出一个一维数组(当前栈的最小元素)示例示例1输入[[1,3],[1,2],[1

2021-02-20 23:40:05 149

原创 牛客网刷题-买卖股票的最好时机

问题描述假设你有一个数组,其中第\ i i 个元素是股票在第\ i i 天的价格。你有一次买入和卖出的机会。(只有买入了股票以后才能卖出)。请你设计一个算法来计算可以获得的最大收益。输入描述:输入一个数组输出描述:输出最大的收益示例示例1输入[1,4,2]输出3解决思路分析因为只能买入一次,所以数据只能遍历一次,我们可以通过遍历的记录出现的历史低价,然后以当前价格做卖出得到的最大收益。最高的收益 = 最高的卖出价格 - 最低的买入价格。方法通过遍历的

2021-02-20 23:18:49 287 1

原创 牛客网刷题-二叉树的之字形层序遍历

问题描述给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)输入描述:输入一棵树输出描述:输出树的之字形遍历示例示例1输入{3,9,20,#,#,15,7}输出[[3],[20,9],[15,7]]解决思路分析本地很明显是一道广度优先搜索(bfs)的题目,广度优先搜索一般会借助队列这种数据结构,遍历每一层的节点,然后依次加入左节点和右节点,通过flag判断是否需要做结果的反转。方法广度优先搜索代码实现

2021-02-09 12:14:22 241 1

原创 牛客网刷题-两个链表的第一个公共结点

问题描述输入两个链表,找出它们的第一个公共结点。输入描述:输入两个链表输出描述:输出第一个公共节点示例示例1输入4->1->8->4->5;5->0->8->4->5输出8->4->5解决思路分析遍历链表1,使用额外的空间存储,遍历链表2,查找是否有相同的元素,相同为第一个公共节点。2.使用双指针法,但是双指针法的前提是遍历的链表的长度有规律,但是这两个链表第一个公共节点前的长度可能不一样,这里我们主

2021-02-09 11:14:46 98

原创 牛客网刷题-最长公共子串

问题描述给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1。输入描述:输入两个字符串输出描述:输出最长公共子串示例示例1输入“1AB2345CD”,“12345EF”输出“2345”解决思路分析最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经典的面试题目,因为它的解法是典型的二维动态规划,大部分比较困难的字符串问题都和这个问题一个套路。方法介绍(1)dp数组的定义:i

2021-02-08 16:24:50 302

原创 牛客网刷题-数组中未出现的最小正整数

问题描述给定一个无序数组arr,找到数组中未出现的最小正整数例如arr = [-1, 2, 3, 4]。返回1arr = [1, 2, 3, 4]。返回5输入描述:输入一个数组输出描述:输出数组中未出现的最小正整数示例示例1输入[-1, 2, 3, 4]输出1解决思路分析通过遍历数组的方式查找最小的正整数,可以事先添加正整数变量,方便判断 。方法通过遍历数组的方式查找最小的正整数,可以事先添加正整数变量,方便判断 。代码实现// 思路1pub

2021-02-08 11:44:02 215

原创 牛客网刷题-两个链表生成相加链表

问题描述假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。输入描述:输入两个链表输出描述:输出两个链表和的集合示例示例1输入[9,3,7],[6,3]输出{1,0,0,0}解决思路分析链表正序没法计算,因为需要考虑进位的问题,所以我们需

2021-02-07 22:25:16 150

原创 牛客网刷题-将字符串转化为整数

问题描述实现函数 atoi 。函数的功能为将字符串转化为整数提示:仔细思考所有可能的输入情况。这个问题没有给出输入的限制,你需要自己考虑所有可能的情况。输入描述:输入一个字符串输出描述:输出字符串的整数示例示例1输入“123”输出123解决思路分析通过遍历方式加和计算,注意需要处理正负号和字母的情况,以及数越界的情况。方法通过遍历方式加和计算,注意需要处理正负号和字母的情况,以及数越界的情况。代码实现// 思路1public class Sol

2021-02-07 17:17:52 169

原创 牛客网刷题-数组中相加和为0的三元组

问题描述给出一个有n个元素的数组S,S中是否有元素a,b,c满足a+b+c=0?找出数组S中所有满足条件的三元组。注意:三元组(a、b、c)中的元素必须按非降序排列。(即a≤b≤c)解集中不能包含重复的三元组。输入描述:输入一个数组输出描述:输出三个数和为0的数组集合示例示例1输入[-2,0,1,1,2]输出[[-2,0,2],[-2,1,1]]解决思路分析采用三个指针下标的方法,下标 i 可以作为遍历数组的下标,left 为大于 i 的左下标,right

2021-02-06 22:52:47 387 1

原创 牛客网刷题-括号序列

问题描述给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。输入描述:输入一个括号的字符串输出描述:输出这个括号是否合法示例示例1输入“[]”输出true解决思路分析借助栈数据结构,可以碰到左括号如栈,右括号出栈方法借助栈数据结构,可以碰到左括号如栈,右括号出栈。(PS小技巧:可以碰到左括

2021-02-05 11:01:27 287 3

原创 牛客网刷题-数组中出现次数超过一半的数字

问题描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。输入描述:输入一个数组输出描述:输出出现次数超过一半的数字示例示例1输入[1,2,3,2,2,2,5,4,2]输出2解决思路分析采用hash的方法。通过第一次遍历找出出现次数最多的数字,第二次遍历统计该数字出现的次数方法通过hash的方法,借助 hashMap存储统计数字出现的次数,如果发现符合条件的数字,返回通过第一次遍历找出出现次数最多的数字,第二次遍历统计该数字出现的次数

2021-02-04 14:15:31 135

原创 牛客网刷题-在转动过的有序数组中寻找目标值

问题描述给出一个转动过的有序数组,你事先不知道该数组转动了多少。在数组中搜索给出的目标值,如果能在数组中找到,返回它的索引,否则返回-1。假设数组中不存在重复项。输入描述:输入一个转动的数组输出描述:输出目标值的索引示例示例1输入[3,2,1],1输出2解决思路分析采用变形的二分查找。方法虽然题目给出的是转动的数组,但是我们可以在正确的区间用二分法二分法三个变量:start,end,mid如果 arr[mid] < arr[end],说

2021-02-03 23:10:14 159

原创 牛客网刷题-字符串的排列

问题描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。输入描述:输入一个字符串输出描述:输出字符串的所有排列示例示例1输入abc输出abc,acb,bac,bca,cab,cb解决思路分析采用深度优先搜索遍历的方式,采用先固定某个元素,交换其他元素的方式。方法采用深度优先搜索遍历的方式,采用先固定某个元素,交换其他元素的方式。(后期会补图)递归分析递归参数:arr 字节数组,list 结果, i 下标终止条件:终止条件:当i达到了字符

2021-02-03 18:38:12 182

原创 牛客网刷题-二叉树根节点到叶子节点和为指定值的路径

问题描述给定一个二叉树和一个值 sum,请找出所有的根节点到叶子节点的节点值之和等于 sum 的路径。输入描述:输入一棵二叉树,一个sum和输出描述:输出所有满足条件的路径示例示例1输入给出如下的二叉树,sum=22,输出[[5,4,11,2],[5,8,9]]解决思路分析采用深度优先搜索遍历的方式,通过回溯法记录走过的路径,判断每一条路径是否符合条件。深度优先遍历:从跟节点遍历,延某一条路径直到遍历到叶子节点再返回,继续遍历其他路径回溯法 :(

2021-02-01 15:07:23 513 1

原创 牛客网刷题-合并k个已排序的链表

问题描述以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。(字符串长度不大于100000,保证字符串仅由’0’~'9’这10种字符组成)输入描述:输入两个字符串格式数字输出描述:输出数字相加的和示例示例1输入“1”,“99”输出“100”解决思路分析从末位向前依次处理,处理进位的情况,需要处理相加和超出最长字符串位数的情况方法通过循环从末位向前依次处理,处理进位的情况,需要处理相加和超出最长字符串位数的情况代码实现// 思路

2021-01-31 23:52:29 152

包装类排序工具类(list)

可以实现对象属性的排序,对象的属性类型可以是字符串、整形、时间类型、包装类;

2018-05-09

空空如也

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

TA关注的人

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