![](https://img-blog.csdnimg.cn/20201205184943949.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode优质题解
分享LeetCode日常刷题遇到的经典好题、优质题解
一口好锅
草率计划,立即行动!
展开
-
【LeetCode击败99%+】设计一个支持增量操作的栈
题目请你设计一个支持下述操作的栈。实现自定义栈类 CustomStack :CustomStack(int maxSize):用 maxSize 初始化对象,maxSize 是栈中最多能容纳的元素数量,栈在增长到maxSize 之后则不支持 push 操作。void push(int x):如果栈还未增长到 maxSize ,就将 x 添加到栈顶。int pop():弹出栈顶元素,并返回栈顶的值,或栈为空时返回 -1 。void inc(int k, int val):栈底的 k个元素原创 2021-01-08 21:08:48 · 104 阅读 · 0 评论 -
【LeetCode击败99%+】栈的最小值
题目请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); --> 返回 -3.minStack.pop();minStack.top(); -原创 2021-01-08 21:05:48 · 88 阅读 · 0 评论 -
【LeetCode击败99%+】化栈为队
题目实现一个MyQueue类,该类用两个栈来实现一个队列。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false说明:你只能使用标准的栈操作 – 也就是只有 push to top, peek/pop from top, size 和 is empty操作是合法的。 你原创 2021-01-08 21:02:29 · 152 阅读 · 0 评论 -
【LeetCode击败99%+】用栈操作构建数组
题目给你一个目标数组 target 和一个整数 n。每次迭代,需要从 list = {1,2,3…, n} 中依序读取一个数字。请使用下述操作来构建目标数组 target :Push:从 list 中读取一个新元素, 并将其推入数组中。Pop:删除数组中的最后一个元素。如果目标数组构建完成,就停止读取更多元素。题目数据保证目标数组严格递增,并且只包含 1 到 n 之间的数字。请返回构建目标数组所用的操作序列。题目数据保证答案是唯一的。示例 1:输入:target =原创 2021-01-08 20:55:35 · 119 阅读 · 0 评论 -
【LeetCode击败99%+】文件夹操作日志搜集器
题目每当用户执行变更文件夹操作时,LeetCode 文件系统都会保存一条日志记录。下面给出对变更操作的说明:"../" :移动到当前文件夹的父文件夹。如果已经在主文件夹下,则 继续停留在当前文件夹 。"./" :继续停留在当前文件夹。"x/" :移动到名为 x 的子文件夹中。题目数据 保证总是存在文件夹 x 。给你一个字符串列表 logs ,其中 logs[i] 是用户在 ith 步执行的操作。文件系统启动时位于主文件夹,然后执行 logs 中的操作。执行完所有变更文件夹操作原创 2021-01-08 20:13:22 · 140 阅读 · 0 评论 -
【LeetCode击败99%+】检查两个字符串数组是否相等
题目给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false 。数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。示例 1:输入:word1 = ["ab", "c"], word2 = ["a", "bc"]输出:true解释:word1 表示的字符串为 "ab" + "c" -> "abc"word2 表示的字符串为 "a" + "bc" -> "abc"两个字符串相同,返回 true示原创 2020-12-10 20:31:56 · 186 阅读 · 0 评论 -
【LeetCode击败99%+】柠檬水找零
题目在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入:[5,5,5,10,20]输出:true解释:前 3 位顾客那里,我们按顺序收取 3 张原创 2020-12-10 20:19:01 · 148 阅读 · 0 评论 -
【LeetCode击败99%+】设计 Goal 解析器
题目请你设计一个可以解释字符串 command 的 Goal 解析器 。command 由 “G”、"()" 和/或 “(al)” 按某种顺序组成。Goal 解析器会将 “G” 解释为字符串 “G”、"()" 解释为字符串 “o” ,"(al)" 解释为字符串 “al” 。然后,按原顺序将经解释得到的字符串连接成一个字符串。给你字符串 command ,返回 Goal 解析器 对 command 的解释结果。示例 1:输入:command = "G()(al)"输出:"Goal"解释:Goa原创 2020-12-10 20:14:20 · 159 阅读 · 0 评论 -
【LeetCode击败99%+】不同路径
题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -> 向下 -> 向右原创 2020-12-10 20:05:02 · 129 阅读 · 0 评论 -
【LeetCode击败99%+】二叉树的最近公共祖先 III
评论:经典递归题目给定一棵二叉树中的两个节点 p 和 q,返回它们的最近公共祖先节点(LCA)。每个节点都包含其父节点的引用(指针)。Node 的定义如下:class Node { public int val; public Node left; public Node right; public Node parent;}根据维基百科中对最近公共祖先节点的定义:“两个节点 p 和 q 在二叉树 T 中的最近公共祖先节点是后代节点中既包括 .原创 2020-12-05 01:23:39 · 119 阅读 · 0 评论 -
【LeetCode击败99%+】最富有客户的资产总量
题目给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。示例 1:输入:accounts = [[1,2,3],[3,2,1]]输出:6解释:第 1 位客户的资产总量 = 1 + 2 + 3 = 6第 2 位客户的资产总量 = 3 + 2 + 1 =原创 2020-12-05 01:23:23 · 228 阅读 · 0 评论 -
【LeetCode击败99%+】分割平衡字符串
题目在一个「平衡字符串」中,‘L’ 和 ‘R’ 字符的数量是相同的。给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。返回可以通过分割得到的平衡字符串的最大数量。示例 1:输入:s = "RLRRLLRLRL"输出:4解释:s 可以分割为 "RL", "RRLL", "RL", "RL", 每个子字符串中都包含相同数量的 'L' 和 'R'。示例 2:输入:s = "RLLLLRRRLR"输出:3解释:s 可以分割为 "RL", "LLLRRR", "LR", 每个子字原创 2020-12-05 01:23:06 · 109 阅读 · 0 评论 -
【LeetCode击败99%+】你可以获得的最大硬币数目
评论:贪心思想题目有 3n 堆数目不一的硬币,你和你的朋友们打算按以下方式分硬币:每一轮中,你将会选出 任意 3 堆硬币(不一定连续)。Alice 将会取走硬币数量最多的那一堆。你将会取走硬币数量第二多的那一堆。Bob 将会取走最后一堆。重复这个过程,直到没有更多硬币。给你一个整数数组 piles ,其中 piles[i] 是第 i 堆中硬币的数目。返回你可以获得的最大硬币数目。示例 1:输入:piles = [2,4,1,2,7,8]输出:9解释:选出 (2, 7.原创 2020-12-05 01:22:51 · 158 阅读 · 0 评论 -
【LeetCode击败99%+】子集
评论:非常巧妙题目给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]代码class Solution { public List<List<Integer>> subsets(int[] nums) {.原创 2020-12-05 01:22:38 · 100 阅读 · 0 评论 -
【LeetCode击败99%+】嵌套列表权重和
评论:经典递归题目给定一个嵌套的整数列表,请返回该列表按深度加权后所有整数的总和。每个元素要么是整数,要么是列表。同时,列表中元素同样也可以是整数或者是另一个列表。示例 1:输入: [[1,1],2,[1,1]]输出: 10 解释: 因为列表中有四个深度为 2 的 1 ,和一个深度为 1 的 2。示例 2:输入: [1,[4,[6]]]输出: 27 解释: 一个深度为 1 的 1,一个深度为 2 的 4,一个深度为 3 的 6。所以,1 + 4*2 + 6*3 = .原创 2020-12-05 01:22:00 · 133 阅读 · 0 评论 -
【LeetCode击败99%+】找到 N 叉树的根节点
题目给定一棵 N 叉树 的所有节点在一个数组 Node[] tree 中,树中每个节点都有 唯一的值 。找到并返回 N 叉树的 根节点 。自定义测试:N 叉树的输入序列为其层序遍历序列,每组子节点用 null 分隔(见示例)。上图中的 N 叉树的序列化描述为 [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] 。测试将以下列方式进行:输入数据的形式为树的原创 2020-12-04 23:00:35 · 432 阅读 · 0 评论 -
【LeetCode击败99%+】祖父节点值为偶数的节点和
评论深度好题题目给你一棵二叉树,请你返回满足以下条件的所有节点的值之和:该节点的祖父节点的值为偶数。(一个节点的祖父节点是指该节点的父节点的父节点。)如果不存在祖父节点值为偶数的节点,那么返回 0 。示例:输入:root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]输出:18解释:图中红色节点的祖父节点的值为偶数,蓝色节点为这些红色节点的祖父节点。 提示:树中节点的数目在 1 到 10^4 之间。每个节点的值在 1 到 1.原创 2020-12-04 22:55:35 · 96 阅读 · 0 评论 -
【LeetCode击败99%+】层数最深叶子节点的和
题目给你一棵二叉树,请你返回层数最深的叶子节点的和。示例:输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8]输出:15提示:树中节点数目在 1 到 10^4 之间。每个节点的值在 1 到 100 之间。代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; *原创 2020-12-04 22:52:26 · 140 阅读 · 0 评论 -
【LeetCode击败99%+】合并两个链表
题目给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。请你将 list1 中第 a 个节点到第 b 个节点删除,并将list2 接在被删除节点的位置。下图中蓝色边和节点展示了操作后的结果:请你返回结果链表的头指针。示例 1:输入:list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]输出:[0,1,2,1000000,1000001,1000002,5原创 2020-12-04 22:49:28 · 92 阅读 · 0 评论 -
【LeetCode击败99%+】保持城市天际线
题目在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度。 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度。 高度 0 也被认为是建筑物。最后,从新数组的所有四个方向(即顶部,底部,左侧和右侧)观看的“天际线”必须与原始数组的天际线相同。 城市的天际线是从远处观看时,由所有建筑物形成的矩形的外部轮廓。 请看下面的例子。建筑物高度可以增加的最大总和是多少?例子:输入: grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,原创 2020-12-04 22:39:22 · 90 阅读 · 0 评论 -
【LeetCode击败99%+】统计作战单位数
题目n 名士兵站成一排。每个士兵都有一个 独一无二 的评分 rating 。每 3 个士兵可以组成一个作战单位,分组规则如下:从队伍中选出下标分别为 i、j、k 的 3 名士兵,他们的评分分别为 rating[i]、rating[j]、rating[k]作战单位需满足: rating[i] < rating[j] < rating[k] 或者 rating[i] > rating[j] >rating[k] ,其中 0 <= i < j <原创 2020-12-04 22:34:17 · 120 阅读 · 0 评论 -
【LeetCode击败99%+】上升下降字符串
题目给你一个字符串 s ,请你根据下面的算法重新构造字符串:从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。重复步骤 2 ,直到你没法从 s 中选择字符。从 s 中选出 最大 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最大 的字符,且该字符比上一个添加的字符小,将它 接在 结果字符串后面。重复步骤 5 ,直到你没法从 s 中选择字符。重复步骤 1 到 6 ,直到原创 2020-11-28 22:47:58 · 64 阅读 · 0 评论 -
【LeetCode击败99%+】数组中两元素的最大乘积
【LeetCode击败99%+】数组中两元素的最大乘积题目给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。请你计算并返回该式的最大值。示例 1:输入:nums = [3,4,5,2]输出:12 解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大值,(nums[1]-1)*(nums[2]-1) = (4-1)*(5-1) = 3*4 = 12 。 示例 2:输入:nums =原创 2020-11-29 01:32:46 · 136 阅读 · 0 评论 -
【LeetCode击败99%+】阿姆斯特朗数
【LeetCode击败99%+】阿姆斯特朗数题目假设存在一个 k 位数 N,其每一位上的数字的 k 次幂的总和也是 N,那么这个数是阿姆斯特朗数。给你一个正整数 N,让你来判定他是否是阿姆斯特朗数,是则返回 true,不是则返回 false。示例 1:输入:153输出:true153 是一个 3 位数,且 153 = 1^3 + 5^3 + 3^3。示例 2:输入:123输出:false解释: 123 是一个 3 位数,且 123 != 1^3 + 2^3 + 3^3 = 36原创 2020-11-28 22:51:37 · 233 阅读 · 0 评论 -
【LeetCode击败99%+】将每个元素替换为右侧最大元素
题目给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。完成所有替换操作后,请你返回这个数组。示例:输入:arr = [17,18,5,4,6,1]输出:[18,6,6,6,1,-1]提示:1 <= arr.length <= 10^41 <= arr[i] <= 10^5代码class Solution { public int[] replaceElements(int[] arr) {原创 2020-11-28 22:48:13 · 70 阅读 · 0 评论 -
【LeetCode击败99%+】二叉搜索树的范围和
题目给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。示例 1:输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10输出:23提示:树中节点数目在范围 [1, 2 * 104] 内1 <= Node.val <= 1051 <=原创 2020-11-28 22:48:24 · 92 阅读 · 0 评论 -
【LeetCode击败99%+】打印从1到最大的n位数
题目输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]说明:用返回一个整数列表来代替打印n 为正整数代码class Solution { public int[] printNumbers(int n) { int max = 0; for (int i = 0; i < n; i++)原创 2020-11-28 22:48:35 · 108 阅读 · 0 评论 -
【LeetCode击败99%+】合并二叉树
题目给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 1 2原创 2020-11-28 22:48:47 · 89 阅读 · 0 评论 -
【LeetCode击败99%+】链表中倒数第k个节点
题目输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.代码/** * Definition for singly-linked list. * public class ListNode原创 2020-11-28 22:48:58 · 72 阅读 · 0 评论 -
【LeetCode击败99%+】二叉树的镜像
题目请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 1示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]限制:0 <= 节点个数 <= 1000注意:本题与主站 226 题相同:https://leetco原创 2020-11-28 22:49:12 · 82 阅读 · 0 评论 -
【LeetCode击败99%+】二叉树的深度
题目输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。提示:节点总数 <= 10000代码/** * Definition for a binary tree node. * public class TreeNode { *原创 2020-11-28 22:49:22 · 66 阅读 · 0 评论 -
【LeetCode击败99%+】重新排列字符串
题目给你一个字符串 s 和一个 长度相同 的整数数组 indices 。请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。返回重新排列后的字符串。示例 1:输入:s = "codeleet", indices = [4,5,6,7,0,2,1,3]输出:"leetcode"解释:如图所示,"codeleet" 重新排列后变为 "leetcode" 。示例 2:输入:s = "abc", indices = [0,1,2]输出:"abc"解原创 2020-11-27 11:17:48 · 140 阅读 · 0 评论 -
【LeetCode击败99%+】最小高度树
题目给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 代码/** * Definition for a binary tree node. * public原创 2020-11-27 11:13:37 · 108 阅读 · 0 评论 -
【LeetCode击败99%+】寻找所有的独生节点
题目二叉树中,如果一个节点是其父节点的唯一子节点,则称这样的节点为 “独生节点” 。二叉树的根节点不会是独生节点,因为它没有父节点。给定一棵二叉树的根节点 root ,返回树中 所有的独生节点的值所构成的数组 。数组的顺序 不限 。示例 1:输入:root = [1,2,3,null,4]输出:[4]解释:浅蓝色的节点是唯一的独生节点。节点 1 是根节点,不是独生的。节点 2 和 3 有共同的父节点,所以它们都不是独生的。示例 2:输入:root = [7,1,4,6,null,5原创 2020-11-27 11:10:38 · 115 阅读 · 0 评论 -
【LeetCode击败99%+】速算机器人
题目小扣在秋日市集发现了一款速算机器人。店家对机器人说出两个数字(记作 x 和 y),请小扣说出计算指令:“A” 运算:使 x = 2 * x + y;“B” 运算:使 y = 2 * y + x。在本次游戏中,店家说出的数字为 x = 1 和 y = 0,小扣说出的计算指令记作仅由大写字母 A、B 组成的字符串 s,字符串中字符的顺序表示计算顺序,请返回最终 x 与 y 的和为多少。示例 1:输入:s = "AB"输出:4解释:经过一次 A 运算后,x = 2,原创 2020-11-27 11:04:13 · 116 阅读 · 0 评论 -
【LeetCode击败99%+】在既定时间做作业的学生人数
题目给你两个整数数组 startTime(开始时间)和 endTime(结束时间),并指定一个整数 queryTime 作为查询时间。已知,第 i 名学生在 startTime[i] 时开始写作业并于 endTime[i] 时完成作业。请返回在查询时间 queryTime 时正在做作业的学生人数。形式上,返回能够使 queryTime 处于区间 [startTime[i], endTime[i]](含)的学生人数。示例 1:输入:startTime = [1,2,3], endTi原创 2020-11-27 11:00:15 · 109 阅读 · 0 评论 -
【LeetCode击败99%+】访问所有点的最小时间
题目平面上有 n 个点,点的位置用整数坐标表示 points[i] = [xi, yi]。请你计算访问所有这些点需要的最小时间(以秒为单位)。你可以按照下面的规则在平面上移动:每一秒沿水平或者竖直方向移动一个单位长度,或者跨过对角线(可以看作在一秒内向水平和竖直方向各移动一个单位长度)。必须按照数组中出现的顺序来访问这些点。示例 1: 输入:points = [[1,1],[3,4],[-1,0]] 输出:7解释:一条最佳的访问路径是: [1,1] -> [2,2] ->原创 2020-11-27 10:57:36 · 99 阅读 · 0 评论 -
【LeetCode击败99%+】将数字变成 0 的操作次数
题目给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。示例 1:输入:num = 14输出:6解释:步骤 1) 14 是偶数,除以 2 得到 7 。步骤 2) 7 是奇数,减 1 得到 6 。步骤 3) 6 是偶数,除以 2 得到 3 。步骤 4) 3 是奇数,减 1 得到 2 。步骤 5) 2 是偶数,除以 2 得到 1 。步骤 6) 1 是奇数,减 1 得到 0 。示例 2:输入:num = 8原创 2020-11-27 10:53:21 · 133 阅读 · 0 评论 -
【LeetCode击败99%+】完全二叉树的节点个数
题目给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入: 1 / \ 2 3 / \ /4 5 6输出: 6代码/** * Definition for a binary tree node. * public class TreeNode {原创 2020-11-27 10:47:18 · 96 阅读 · 0 评论 -
【LeetCode击败99%+】单行键盘
本题没有击败99%+,个人觉得比较有意义,分享一下题目我们定制了一款特殊的力扣键盘,所有的键都排列在一行上。我们可以按从左到右的顺序,用一个长度为 26 的字符串 keyboard (索引从 0 开始,到 25 结束)来表示该键盘的键位布局。现在需要测试这个键盘是否能够有效工作,那么我们就需要个机械手来测试这个键盘。最初的时候,机械手位于左边起第一个键(也就是索引为 0 的键)的上方。当机械手移动到某一字符所在的键位时,就会在终端上输出该字符。机械手从索引 i 移动到索引.原创 2020-11-22 15:17:36 · 233 阅读 · 0 评论