- 博客(236)
- 收藏
- 关注
原创 LeetCode——675 为高尔夫比赛砍树(JAVA)
你被请来给一个要举办高尔夫比赛的树林砍树。树林由一个 m x n的矩阵表示, 在这个矩阵中:0表示障碍,无法触碰1表示地面,可以行走比 1 大的数表示有树的单元格,可以行走,数值表示树的高度每一步,你都可以向上、下、左、右四个方向之一移动一个单位,如果你站的地方有一棵树,那么你可以决定是否要砍倒它。你需要按照树的高度从低向高砍掉所有的树,每砍过一颗树,该单元格的值变为 1(即变为地面)。你将从 (0, 0)点开始工作,返回你砍完所有树需要走的最小步数。 如果你无法砍完所有的树,返回 -1。
2022-05-23 11:40:07
299
原创 LeetCode——587 安装栅栏(JAVA)
在一个二维的花园中,有一些用 (x, y) 坐标表示的树。由于安装费用十分昂贵,你的任务是先用最短的绳子围起所有的树。只有当所有的树都被绳子包围时,花园才能围好栅栏。你需要找到正好位于栅栏边界上的树的坐标。示例 1:输入: [[1,1],[2,2],[2,0],[2,4],[3,3],[4,2]]输出: [[1,1],[2,0],[4,2],[3,3],[2,4]]解释:示例 2:输入: [[1,2],[2,2],[4,2]]输出: [[1,2],[2,2],[4,2]]注意:所
2022-04-23 17:00:01
262
原创 LeetCode——8 字符串转换整数 (atoi)(JAVA)
请你来实现一个 myAtoi(string s)函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi函数)。函数myAtoi(string s)的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,“123” ->
2021-09-22 19:45:54
298
原创 LeetCode——LCS 02. 完成一半题目(PYTHON)
有 N位扣友参加了微软与力扣举办了「以扣会友」线下活动。主办方提供了 2*N道题目,整型数组 questions中每个数字对应了每道题目所涉及的知识点类型。若每位扣友选择不同的一题,请返回被选的 N道题目至少包含多少种知识点类型。示例 1:输入:questions = [2,1,6,2]输出:1解释:有 2 位扣友在 4 道题目中选择 2 题。可选择完成知识点类型为 2 的题目时,此时仅一种知识点类型因此至少包含 1 种知识点类型。示例 2:输入:questions = [1,5,1
2021-06-28 15:44:11
331
原创 LeetCode——931 下降路径最小和(JAVA)
给你一个 n x n的 方形 整数数组 matrix,请你找出并返回通过 matrix的下降路径 的 最小和 。下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 (row, col)的下一个元素应当是 (row + 1, col - 1)、(row + 1, col)或者 (row + 1, col + 1)。示例 1:输入:matrix = [[2,1,3],[6,5,
2021-05-21 02:46:55
263
1
原创 洛谷——P1048 [NOIP2005 普及组] 采药
题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如果你是辰辰,你能完成这个任务吗?输入格式第一行有 2个整数 T(1≤T≤1000)和 M(1≤M≤100),用一个空格
2021-05-21 01:59:18
348
原创 LeetCode——547 省份数量(JAVA)
有 n个城市,其中一些彼此相连,另一些没有相连。如果城市 a与城市 b直接相连,且城市 b与城市 c直接相连,那么城市 a与城市 c间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n的矩阵 isConnected,其中 isConnected[i][j] = 1表示第 i个城市和第 j个城市直接相连,而 isConnected[i][j] = 0表示二者不直接相连。返回矩阵中 省份 的数量。示例 1:输入:isConnected = [[1,1,0],[
2021-05-20 01:29:47
434
1
原创 LeetCode——692 前K个高频单词(JAVA)
给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2输出: ["i", "love"]解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。 注意,按字母顺序 "i" 在 "love" 之前。示例 2:输入: ["the", "day", "is", "
2021-05-13 15:14:00
186
原创 LeetCode——剑指 Offer 47 礼物的最大价值(JAVA)
在一个 m*n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入: [ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物提示:0 < grid.length<= 2000 < grid[0].le
2021-05-13 14:20:11
135
原创 LeetCode——213 打家劫舍 II(JAVA)
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。示例 1:输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻
2021-05-10 00:20:55
227
2
原创 LeetCode——5 最长回文子串(JAVA)
给你一个字符串 s,找到 s中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"提示:1 <= s.length<= 1000s仅由数字和英文字母(大写和/或小写)组成思路本题就是一个标准的最长回文子串的模板题,我用的动态规划方法来做,时间复杂度O(n2)
2021-05-09 02:25:31
237
原创 LeetCode——121 买卖股票的最佳时机(JAVA)
给定一个数组 prices,它的第 i个元素 prices[i]表示一支给定股票第 i天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1
2021-05-08 21:21:37
188
原创 LeetCode——746 使用最小花费爬楼梯(JAVA)
数组的每个下标作为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0或 1的元素作为初始阶梯。示例 1:输入:cost = [10, 15, 20]输出:15解释:最低花费是从 cost[1] 开始,然后走两步即可到阶梯顶,一共花费 15 。示例 2:输入:cost = [1, 100
2021-05-08 13:50:43
186
原创 LeetCode——965 单值二叉树(JAVA)
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。示例 1:输入:[1,1,1,1,1,null,1]输出:true示例 2:输入:[2,2,2,5,2]输出:false提示:给定树的节点数范围是 [1, 100]。每个节点的值都是整数,范围为 [0, 99]。思路主要的思路就是遍历一遍整棵二叉树,然后每次访问当前结点时,都记录在HashMap中,其中,key是当前结点的val值,value是
2021-05-06 23:11:09
206
原创 LeetCode——515 在每个树行中找最大值(JAVA)
您需要在二叉树的每一行中找到最大的值。示例:输入: 1 / \ 3 2 / \ \ 5 3 9 输出: [1, 3, 9]思路思路比较简单,就是用BFS搜每一层。主要是以下两种情况:当搜到下一层的第一个结点时,先将上一层的最大值放入答案集合中,然后再将maxNum设为当前结点的val值;当搜到同一层的后一个结点时,将它自己的val值和已记录的maxNum进行比较,如果更大,则更新max
2021-05-06 22:04:24
135
原创 LeetCode——513 找树左下角的值(JAVA)
给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入: 2 / \ 1 3输出:1示例 2:输入: 1 / \ 2 3 / / \ 4 5 6 / 7输出:7注意: 您可以假设树(即给定的根节点)不为 NULL。思路找到最后一行最左边结点的值,其实就是最后一层第一个结点的值,所以用BFS搜索即可。具体做法就是:每当搜索到发现当前结点的层次与上
2021-05-06 18:42:00
310
原创 LeetCode——501 二叉搜索树中的众数(JAVA)
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2], 1 \ 2 / 2返回[2].提示: 如果众数超过1个,不需考虑输出顺序进阶: 你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)思路主要思路
2021-05-06 18:01:41
328
原创 LeetCode——404 左叶子之和(JAVA)
计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24思路主要的思路就是对给定的二叉树做DFS,为了找到左叶子,我这里设置了一个新类Node来记录当前结点的身份(是父结点的左孩子还是右孩子)。如果lchild置1,则说明该结点是父结点的左孩子;如果rchild置1,则说明该结点是父结点的右孩子。而根结点的lchild和rchild都置0。然后的话这题就很好做了,D
2021-05-06 17:33:02
132
原创 LeetCode——230 二叉搜索树中第K小的元素(JAVA)
给定一个二叉搜索树的根节点 root,和一个整数 k,请你设计一个算法查找其中第 k个最小元素(从 1 开始计数)。示例 1:输入:root = [3,1,4,null,2], k = 1输出:1示例 2:输入:root = [5,3,6,2,4,null,null,1], k = 3输出:3提示:树中的节点数为 n。1 <= k<= n<= 1040 <= Node.val<= 104思路思路很简单,因为BST的中序遍历是按序递增的,因此,
2021-05-06 17:17:46
173
原创 LeetCode——1720 解码异或后的数组(JAVA)
未知 整数数组 arr由 n个非负整数组成。经编码后变为长度为 n - 1的另一个整数数组 encoded,其中 encoded[i] = arr[i] XOR arr[i + 1]。例如,arr = [1,0,2,1]经编码后得到 encoded = [1,2,3]。给你编码后的数组 encoded和原数组 arr的第一个元素 first(arr[0])。请解码返回原数组 arr。可以证明答案存在并且是唯一的。示例 1:输入:encoded = [1,2,3], first = 1输出:[1,
2021-05-06 03:14:04
225
原创 LeetCode——94 二叉树的中序遍历(JAVA)
给定一个二叉树的根节点 root,返回它的 中序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围 [0, 100]内-100 <= Node.val<= 100进阶: 递
2021-05-06 02:42:59
91
原创 LeetCode——4 寻找两个正序数组的中位数(JAVA)
给定两个大小分别为 m和 n的正序(从小到大)数组 nums1和 nums2。请你找出并返回这两个正序数组的 中位数 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5示例 3:输入:nums1 = [0,0], nums2
2021-05-05 14:58:43
114
原创 LeetCode——116 填充每个节点的下一个右侧节点指针(JAVA)
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next指针设置为 NULL。初始状态下,所有 next指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外
2021-05-05 01:26:06
130
原创 LeetCode——538 把二叉搜索树转换为累加树(JAVA)
给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node的新值等于原树中大于或等于 node.val的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。注意: 本题和 1038: https://leetcode-cn.com/problems/binary-search-tree-to-greater-sum-tr
2021-05-04 22:27:00
204
3
原创 LeetCode——129 求根节点到叶节点数字之和(JAVA)
给你一个二叉树的根节点 root,树中每个节点都存放有一个 0到 9之间的数字。每条从根节点到叶节点的路径都代表一个数字:例如,从根节点到叶节点的路径 1 -> 2 -> 3表示数字 123。计算从根节点到叶节点生成的 所有数字之和 。叶节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3]输出:25解释:从根到叶子节点路径 1->2 代表数字 12从根到叶子节点路径 1->3 代表数字 13因此,数字总和 = 12 + 13 = 25
2021-05-04 21:29:55
500
2
原创 LeetCode——98 验证二叉搜索树(JAVA)
给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其
2021-05-04 21:10:18
122
原创 LeetCode——17 电话号码的字母组合(JAVA)
给定一个仅包含数字 2-9的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1不对应任何字母。示例 1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例 2:输入:digits = ""输出:[]示例 3:输入:digits = "2"输出:["a","b","c"]提示:0 <= digits.length<=
2021-05-04 20:54:32
359
1
原创 LeetCode——58 最后一个单词的长度(JAVA)
给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s = "Hello World"输出:5示例 2:输入:s = " "输出:0提示:1 <= s.length<= 104s仅有英文字母和空格 ' '组成思路思路很简单,就是把原先给定的字符串反转过来,然后寻找遇到第一个空格之前的长度。但是要注意本题有一个坑点:输
2021-05-03 21:07:06
150
原创 LeetCode——993 二叉树的堂兄弟节点(JAVA)
在二叉树中,根节点位于深度 0处,每个深度为 k的节点的子节点位于深度 k+1处。如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root,以及树中两个不同节点的值 x和 y。只有与值 x和 y对应的节点是堂兄弟节点时,才返回 true。否则,返回 false。示例 1:输入:root = [1,2,3,4], x = 4, y = 3输出:false示例 2:输入:root = [1,2,3,null,4,null,5],
2021-05-02 21:37:55
209
1
原创 LeetCode——559 N叉树的最大深度(JAVA)
给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:3示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输出:5提示:树的深度不会
2021-05-01 15:47:09
143
原创 LeetCode——690 员工的重要性(JAVA)
给定一个保存员工信息的数据结构,它包含了员工 唯一的 id ,重要度 和 直系下属的 id 。比如,员工 1 是员工 2 的领导,员工 2 是员工 3 的领导。他们相应的重要度为 15 , 10 , 5 。那么员工 1 的数据结构是 [1, 15, [2]],员工 2的 数据结构是 [2, 10, [3]],员工 3 的数据结构是 [3, 5, []]。注意虽然员工 3 也是员工 1 的一个下属,但是由于 并不是直系 下属,因此没有体现在员工 1 的数据结构中。现在输入一个公司的所有员工信息,以及单个员
2021-05-01 15:22:59
287
原创 LeetCode——199 二叉树的右视图(JAVA)
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---思路主要思路就是进行层序遍历(用BFS搜),然后对当前这个结点进行判断,主要分以下几种情况:如果是和上一个结点是同一层(根结点的上一个结点
2021-05-01 01:16:52
209
1
原创 LeetCode——102 二叉树的层序遍历(JAVA)
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]]思路主要思路就是先用BFS遍历得到一个层序遍历的结果集合,然后再对这个集合里的各个元素按层次分类,每个相同层次的元素是一个List,最后再将这些相同层次的List依次放在总的List里
2021-04-29 21:57:03
148
原创 LeetCode——257 二叉树的所有路径(JAVA)
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3思路思路很简单,就是先用一个ArrayList来存放暂时的路径,当DFS搜到叶子结点时,将此时的这条暂时路径转化为String(这里我用StringBuffer来处理),并存放到List&
2021-04-29 20:10:24
165
原创 LeetCode——104 二叉树的最大深度(JAVA)
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3。思路这题和LeetCode——111 二叉树的最小深度(JAVA)思路一致,就是DFS到叶子结点之后,数arrayList里元素的个数。但是暂时没想到什么好的剪枝方法,时间空间开销较大。代码pub
2021-04-29 17:40:35
151
原创 LeetCode——111 二叉树的最小深度(JAVA)
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例 1:输入:root = [3,9,20,null,null,15,7]输出:2示例 2:输入:root = [2,null,3,null,4,null,5,null,6]输出:5提示:树中节点数的范围在 [0, 105] 内-1000 <= Node.val<= 1000思路思路和之前的二叉树遍历差不多一致,主要就是到叶子结点之后
2021-04-29 17:15:25
253
原创 LeetCode——113 路径总和 II(JAVA)
给你二叉树的根节点 root和一个整数目标和 targetSum,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:[[5,4,11,2],[5,8,4,5]]示例 2:输入:root = [1,2,3], targetSum = 5输出:[]示例 3:输入:root = [1,2], target
2021-04-29 16:33:23
225
原创 LeetCode——112 路径总和(JAVA)
给你二叉树的根节点 root和一个表示目标和的整数 targetSum,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true示例 2:输入:root = [1,2,3], targetSum = 5输出:false示例 3:输入:root = [
2021-04-29 14:12:27
223
1
原创 Java学习日记03
字符串排序程序设计JAVA API的最后一节实例(《70讲轻松通关JavaSE》)。输入20 78 9 -7 88 36 29输出-7 9 20 29 36 78 88思路主要想法是把读入的字符串切割,分辨出字符串中的每个数字,然后将这些数字放进ArrayList里,放完之后,对ArrayList做个排序,然后再将ArrayList里的数字串成字符串。要注意的点:在读入字符串时,如果是最后一位,需要先将该位的数字读进sBuffer,再将此时的sBuffer转化为Integer放进Arr
2021-04-27 19:01:20
104
原创 LeetCode——剑指 Offer 06 从尾到头打印链表(JAVA)
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000思路主要的思路和LeetCode——21 合并两个有序链表(JAVA)差不多,就是先把单链表转换成ArrayList,再将其倒着赋给一个新数组并返回即可。代码public class Solution { public class ListNode { int val; ListNode n
2021-04-27 01:03:33
119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人