leetcode
ShilongLi01
这个作者很懒,什么都没留下…
展开
-
leetcode#248 中心对称数 III
leetcode#248 中心对称数 III题目:中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。写一个函数来计算范围在 [low, high] 之间中心对称数的个数。示例:输入: low = "50", high = "100"输出: 3 解释: 69,88 和 96 是三个在该范围内的中心对称数思路:数位dp。计算位数小于字符串位数的个数,计算长度相等时的个数最后相加。代码:class Solution{public: boo原创 2021-07-15 20:34:57 · 803 阅读 · 0 评论 -
leetcode#246 中心对称数
leetcode#246 中心对称数题目:中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串的形式来表达数字。示例:输入: num = "69"输出: true思路:可以想到,只有6,9,1,8,0关于中心对称,那么我们可以把它们替换成他们对称的数,然后变换前后的字符串是否对称就可以了。代码:class Solution{public: bool isStrobogramm原创 2021-07-15 16:36:22 · 760 阅读 · 0 评论 -
leetcode#241 为运算表达式设计优先级
leetcode#241 为运算表达式设计优先级题目:给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例:输入: "2-1-1"输出: [0, 2]解释: ((2-1)-1) = 0 (2-(1-1)) = 2思路:对于一个形如 x op y(op 为运算符,x 和 y 为数) 的算式而言,它的结果组合取决于 x 和 y 的结果组合数,而 x 和 y 又可以写成形如 x o原创 2021-07-15 14:53:32 · 140 阅读 · 0 评论 -
leetcode#240 搜索二维矩阵 II
leetcode#240 搜索二维矩阵 II题目:编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5输出:true思路:二分不用说比较简单 。第二种思路,因为数原创 2021-07-15 12:21:44 · 65 阅读 · 0 评论 -
leetcode#238 除自身以外数组的乘积
leetcode#238 除自身以外数组的乘积题目:给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]思路:最简单的办法就是算所有数的乘积然后除以当前数,但是不能用除法,我们可以想到,当位置的答案是他左面所有数的乘积和右边所有数的乘积,那么我们可以维护两个数组,一个从左到右乘,一个从右往左乘,其中从左原创 2021-07-15 11:28:57 · 75 阅读 · 0 评论 -
leetcode#229 求众数II
leetcode#229 求众数II题目:给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。示例:输入:[3,2,3]输出:[3]思路:摩尔投票法:原先的是两个不同的消去,现在换成三个不同的消去就可以了,设两个候选人a,b,如果当前数和a,b不同,那么说明他们三个可以消去了,a,b的票数各减一,如果和a,b相同就可以加票,如果a,b票数小于0进行换届。代码:class Solu原创 2021-07-14 17:03:48 · 92 阅读 · 0 评论 -
leetcode#226 翻转二叉树
leetcode#226 翻转二叉树题目:翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1思路:可以想到这是一个递归问题,对于当前节点,反转他的左右子节点即可。代码:/** * Definition for a binary tree node. * struct TreeNode { * i原创 2021-07-14 15:36:26 · 56 阅读 · 0 评论 -
leetcode#218 天际线问题
leetcode#218 天际线问题题目:城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回由这些建筑物形成的 天际线 。每个建筑物的几何信息由数组 buildings 表示,其中三元组 buildings[i] = [lefti, righti, heighti] 表示:lefti 是第 i 座建筑物左边缘的 x 坐标。righti 是第 i 座建筑物右边缘的 x 坐标。heighti 是第 i 座建筑物的高度。天际线 应该表示为由 “关键原创 2021-07-14 10:48:14 · 178 阅读 · 0 评论 -
leetcode#214 最短回文串
leetcode#214 最短回文串题目:给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。示例:输入:s = "aacecaaa"输出:"aaacecaaa"题目:可以想到,我们第一个操作就是找到,最长的前缀回文串,第一种方法是n2暴力找,第二种是KMP,对于一个回文串s,设他的reverse为_s,可以想到一个回文串的s和_s相等,对于此题,我们可以进行KMP,匹配串为_s,模式串为s,可以想到,如果存在回文串,那么_s的后缀回原创 2021-07-12 16:01:39 · 147 阅读 · 0 评论 -
leetcode#212 单词搜索II
leetcode#212 单词搜索II题目:给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。示例:输入:board = [["o","a","a","n"],["e","t","a","e"],["i","h","k","r"],["i","f","l","v"原创 2021-07-12 14:03:25 · 88 阅读 · 0 评论 -
leetcode#202 快乐数
leetcode#202 快乐数题目:编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 true ;不是,则返回 false 。示例:输入:19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 0原创 2021-07-11 10:51:48 · 86 阅读 · 0 评论 -
leetcode#201 数字范围按位与
leetcode#201 数字范围按位与题目给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。示例:输入:left = 5, right = 7输出:4思路:设区间为[left,right],实质是求left和right二进制位的公共前缀,然后后面全置位0。二进制最高位1长度不同right: 00100111left: 00000100可见,在100111中一定会有一个进位,原创 2021-07-11 10:07:55 · 158 阅读 · 0 评论 -
leetcode#191 位1的个数
leetcode#191 位1的个数题目:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。示例 2:思路:n&(n-1)可以去掉n的最后一个1。例如6&5=4,110&101=100。代码:c原创 2021-07-10 08:55:44 · 60 阅读 · 0 评论 -
leetcode#190 颠倒二进制位
leetcode#190 颠倒二进制位题目:颠倒给定的 32 位无符号整数的二进制位。示例:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。思路:原创 2021-07-09 11:51:55 · 82 阅读 · 0 评论 -
leetcode#189 旋转数组
leetcode#189 旋转数组题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]思路:第一次反转把想要的结尾的数字反转到前面来,然后,这些数字反转成正序就好了。代码:class Solut原创 2021-07-09 11:28:54 · 65 阅读 · 0 评论 -
leetcode#179 最大数
leetcode#179 最大数题目:给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例:输入:nums = [10,2]输出:"210"思路:生成一种新的排序方式,对于两个数,我们不知道他们怎么排最大,那么我们直接比较结果就好了,使得a+b>b+a就可以了。代码:class Solution{public: string largestNumber(vector原创 2021-07-08 12:32:34 · 124 阅读 · 0 评论 -
leetcode#172 阶乘后的零
leetcode#172 阶乘后的零题目:给定一个整数 n,返回 n! 结果尾数中零的数量。示例:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。思路:可以想到,最简单的办法就是算出结果,然后数有几个0。效率太低。可以想到0是5乘出来的,就算是,所以算有多少个5就可以了,然而25是2个5,所以要多算一个,也就是每25个多算一个,以此类推,125也要多算一个。代码:class Solution {public: int trailingZeroes(int n)原创 2021-07-08 10:02:43 · 55 阅读 · 0 评论 -
leetcode#169 多数元素
leetcode#169 多数元素题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例:输入:[3,2,3]输出:3思路:可以想到众数是最多的数,我们维护一个cnt,如果是众数,cnt+1,不是众数,cnt-1,最后cnt一定大于0;但是我们不知道众数是什么怎么办,就假设一个众数,然后cnt<0时进行更换就可以了。代码:class Solution{pu原创 2021-07-07 15:42:31 · 49 阅读 · 0 评论 -
leetcode#166 分数到小数
leetcode#166 分数到小数题目:给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。如果小数部分为循环小数,则将循环的部分括在括号内。如果存在多个答案,只需返回 任意一个 。对于所有给定的输入,保证 答案字符串的长度小于 1e4 。示例:输入:numerator = 1, denominator = 2输出:"0.5"思路:不难想到非循环小数的写法,也就是正常的除法,对于循环小数的循环节,可以发现,当一个余数重复出现原创 2021-07-07 14:46:36 · 110 阅读 · 0 评论 -
leetcode#165 比较版本号
leetcode#165 比较版本号题目:给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。思路:很容易想到依次取出每个块,然后进行比较,可以想到的是,对于有前导0的字符串,我们除了把0删除后比较以外,我们可以直接把这个字符串转换成数字就可以了,这样就不用把整个块提出来计算了。代码:原创 2021-07-07 12:55:16 · 78 阅读 · 0 评论 -
leetcode#164 最大间距
leetcode#164 最大间距题目给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。思路:基数排序.代码:class Solution{public: int maximumGap(vector<int> &nums) {原创 2021-07-07 12:32:59 · 63 阅读 · 0 评论 -
leetcode#162 寻找峰值
leetcode#162 寻找峰值题目:峰值元素是指其值大于左右相邻值的元素。给你一个输入数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。示例:输入:nums = [1,2,3,1]输出:2解释:3 是峰值元素,你的函数应该返回其索引 2。思路:一边遍历很容易想到,但是我们可以用二分,不难想到,一个点如果落在下降区间,那么左边一定有峰值,如果一个点在上升区间,那么他的右边一定有峰值,因此我们可以用二分来解决。代码:cl原创 2021-07-07 11:04:56 · 66 阅读 · 0 评论 -
leetcode#160 相交链表
leetcode#160 相交链表题目:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:示例:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Intersected at '8'解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从原创 2021-07-06 15:37:10 · 80 阅读 · 0 评论 -
leetcode#152 乘积最大子数组
leetcode#152 乘积最大子数组题目给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。思路:可以想到,对于第i个数,有两种选择,一是和归入前面的子数组,二是从当前位置开始重新开一个子数组,两者取最大即可。其中能包含负数,对于当前位置想要取得最大值,要考虑正负两种情况,如果当前数为正数,那么我们希望他前面的数越大越好,也就原创 2021-07-06 11:25:30 · 53 阅读 · 0 评论 -
leetcode#150 逆波兰表达式求值
leetcode#150 逆波兰表达式求值题目:根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例:输入:tokens = ["2","1","+","3","*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9思路:可以想到对于逆波兰式的每个运算符,原创 2021-07-05 17:49:45 · 75 阅读 · 0 评论 -
leetcode#149 直线上最多的点数
leetcode#149 直线上最多的点数题目:给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。示例:输入:points = [[1,1],[2,2],[3,3]]输出:3思路:可以想到,固定一个点,遍历所有后面的点,计算有多少斜率相等就可以了,因为固定了一个点,斜率相等说明这些点都在这条直线上。我们用hash存储斜率到数量的映射。斜率怎么存,我们可以想到,2/4和4/8是一样的,我们因此,第一步原创 2021-07-05 17:29:48 · 96 阅读 · 0 评论 -
leetcode#148 排序链表
leetcode#148 排序链表题目:给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?示例:输入:head = [4,2,1,3]输出:[1,2,3,4]思路:归并排序,因为链表的合并可以不占用空间,所以可以做到空间O(1)。细节比较多。代码:/** * Definition for singly-linked list. * struct ListNode原创 2021-07-05 16:08:50 · 66 阅读 · 0 评论 -
leetcode#146 LRU 缓存机制
leetcode#146 LRU 缓存机制题目:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」原创 2021-07-05 14:46:48 · 56 阅读 · 0 评论 -
leetcode#144 二叉树的前序遍历
leetcode#144 二叉树的前序遍历题目:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例:输入:root = [1,null,2,3]输出:[1,2,3]思路:递归。迭代。Morris遍历:我们递归和迭代时,实际上用了一个栈去维护访问节点顺序,以便回溯。我们可以这样,用空余指针指向回溯的下一个点,这样就不用存储序列了。对于一个点,什么时候会回溯到当前点,显然,当我们遍历完左子树最后一个点时,会回到这个点,如果用栈,就把栈回退到当前点。然而我们可以用左子树的最原创 2021-07-05 13:00:18 · 54 阅读 · 0 评论 -
leetcode#142 环形链表II
leetcode#142 环形链表II题目:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1原创 2021-07-05 11:14:21 · 77 阅读 · 0 评论 -
leetcode#140 单词拆分II
leetcode#140 单词拆分II题目:给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说明:分隔时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例:输入:s = "catsanddog"wordDict = ["cat", "cats", "and", "sand", "dog"]输出:[ "cats and dog", "cat sand原创 2021-07-04 17:28:28 · 73 阅读 · 0 评论 -
leetcode#136 只出现一次的数字
leetcode#136 只出现一次的数字题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例:输入: [2,2,1]输出: 1思路:相同数字异或为0,0异或任何数字等于数字本身,所以任何出现两次的数字都被异或消去了。代码:class Solution{public: int singleNumber(vector<int> &am原创 2021-07-04 15:58:44 · 70 阅读 · 0 评论 -
leetcode#135 分发糖果
leetcode#135 分发糖果题目:老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例:输入:[1,0,2]输出:5解释:你可以分别给这三个孩子分发 2、1、2 颗糖果。思路:1、两次遍历从左到右遍历一次,使其满足左条件,从右到左遍历一遍,使其满足右原创 2021-07-04 15:51:23 · 64 阅读 · 0 评论 -
leetcode#133 克隆图
leetcode#133 克隆图题目:给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node { public int val; public List<Node> neighbors;}思路:图的遍历,要注意的问题是,怎么确定一个点是已经被建立过了,我们用哈希表,对每一个点做一个映射,从当前点映射到克隆点。对已经建立过的点不必再搜索。代码:原创 2021-07-04 14:09:27 · 65 阅读 · 0 评论 -
leetcode#132 分割回文串 II
leetcode#132 分割回文串 II题目:给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。返回符合要求的 最少分割次数 。示例:输入:s = "aab"输出:1解释:只需一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串。思路:1、区间dp n3超时。2、普通动态规划对一个字符串,考虑它由哪一步来,他可能由任何他的前缀串加上回文串构成,因此,步数就是他的前缀串的步数加一。代码:class Solution{public: in原创 2021-07-04 13:41:01 · 86 阅读 · 0 评论 -
leetcode#131分割回文串
leetcode#131分割回文串题目:给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。示例:输入:s = "aab"输出:[["a","a","b"],["aa","b"]]思路:第一想法是搜索,对分割点进行搜索,每次分割的时候要判断这次分割的字符串是否为回文串,很费时,我们可以预处理一个dp[i][j]数组,表示i~j是否为回文串,这样dfs时直接判断就可以了,如果不能分割成回文串那就到下一原创 2021-07-04 12:43:29 · 64 阅读 · 0 评论 -
leetcode#128 最长连续序列
leetcode#128 最长连续序列题目:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。进阶:你可以设计并实现时间复杂度为 O(n) 的解决方案吗?示例输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。思路:可以想到的朴素方法就是,对于每一个数字向上判断最长序列,查询数字可以用hash。仔细分析这个过程,我们会发现其中执行了很多不必要的枚举,如果已知有原创 2021-07-03 16:14:14 · 59 阅读 · 0 评论 -
leetcode#127 单词接龙
leetcode#127 单词接龙题目:字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列:序列中第一个单词是 beginWord 。序列中最后一个单词是 endWord 。每次转换只能改变一个字母。转换过程中的中间单词必须是字典 wordList 中的单词。给你两个单词 beginWord 和 endWord 和一个字典 wordList ,找到从 beginWord 到 endWord 的 最短转换序列 中的 单词数目原创 2021-07-03 15:32:37 · 79 阅读 · 0 评论 -
leetcode#126 单词接龙II
leetcode#126 单词接龙II题目:按字典 wordList 完成从单词 beginWord 到单词 endWord 转化,一个表示此过程的 转换序列 是形式上像 beginWord -> s1 -> s2 -> … -> sk 这样的单词序列,并满足:每对相邻的单词之间仅有单个字母不同。转换过程中的每个单词 si(1 <= i <= k)必须是字典 wordList 中的单词。注意,beginWord 不必是字典 wordList 中的单词。sk原创 2021-07-03 14:11:38 · 125 阅读 · 0 评论 -
leetcode#124 二叉树中的最大路径和
leetcode#124 二叉树中的最大路径和题目:路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。示例:输入:root = [1,2,3]输出:6解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6思路:1、递归可知,一个路径总会原创 2021-07-03 11:14:31 · 67 阅读 · 1 评论