tag_数组
文章平均质量分 70
leetcode中标签维数组的题目以及常见的解题套路
菜菜的大数据开发之路
Java技术栈 AND 大数据开发,学习笔记, 拒绝水文
展开
-
33.< tag-数组和旋转(同字符的旋转)>补充: lt.189. 轮转数组(右旋数组) + 剑指 Offer 58 - II. 左旋转字符串(左旋字符串) 1
代码】32.< tag-数组和数学>补充: lt.189. 轮转数组 dbc。原创 2022-08-11 00:44:37 · 129 阅读 · 0 评论 -
32.< tag-数组和位运算>补充: lt.剑指 Offer 56 - I. 数组中数字出现的次数
代码】32.<tag-数组和位运算>补充lt.剑指Offer56-I.数组中数字出现的次数。原创 2022-07-22 15:42:05 · 84 阅读 · 0 评论 -
31.< tag-数组和二分查找>补充: 剑指 Offer 53 - I. 在排序数组中查找数字 I
# 剑指 Offer 53 - I. 在排序数组中查找数字 I原创 2022-07-07 16:32:23 · 107 阅读 · 0 评论 -
30.< tag-数组和前缀和, 同余定理>补充: lt.974. 和可被 K 整除的子数组 1
29.< tag-数组和前缀和, 同余定理>补充: lt.974. 和可被 K 整除的子数组 dbc原创 2022-06-18 16:13:53 · 88 阅读 · 0 评论 -
29.< tag-数组和旋转排序二分法>补充:旋转排序题目二分解法汇总 + 153. 寻找旋转排序数组中的最小值 + lt.154 (同剑指Offer11) dbc
28.< tag-数组和旋转排序二分法>补充:153. 寻找旋转排序数组中的最小值 +旋转排序题目二分解法汇总 + 面试扩展 dbc原创 2022-06-18 00:34:07 · 162 阅读 · 0 评论 -
28.< tag-数组和数组合并>补充: lt.88. 合并两个有序数组 + 面试扩展 dbc
27.< tag-数组和数组合并>补充: lt.88. 合并两个有序数组 + 面试扩展 dbc原创 2022-06-17 23:16:48 · 155 阅读 · 0 评论 -
27.< tag-数组和滑动窗口> -lt.209-长度最小的子数组 + 补充: 剑指 Offer 57 - II. 和为 s 的连续正数序列 1
lt.209-长度最小的子数组[案例需求][思路分析][代码实现]class Solution { public int minSubArrayLen(int target, int[] nums) { //滑动窗口 //right寻找可行解, left 寻找最优解 int sum = 0; int left = 0; int subLength = 0; int res = Integer原创 2022-04-25 15:15:32 · 253 阅读 · 1 评论 -
26.<tag-数组和模拟>-lt- 31.下一个排列 + 面试扩展 + lt- 556. 下一个更大元素 III 1.8
X.<tag-数组和二分查找>-lt.xx-xxxxxx + lt.xx-xxxxxxlt- 31.下一个排列[案例需求][思路分析][代码实现]X.<tag-数组和二分查找>-lt.xx-xxxxxx + lt.xx-xxxxxxlt.240-搜索二维矩阵 ||[案例需求][思路分析][代码实现]X.<tag-数组和二分查找>-lt.xx-xxxxxx + lt.xx-xxxxxxlt- 556. 下一个更大元素 III[案例需求][思路分析][代码实现]原创 2022-04-21 19:16:55 · 296 阅读 · 0 评论 -
25.<tag-数组和缺失, 重复专题>剑指Offer53 II. 缺失数字 +lt.448. 找到消失数字 + lt- 217, lt-219 重复元素 1
lt.面试题 10.03. 搜索旋转数组[案例需求][思路分析]本题跟lt.33-搜索旋转排序数组大体上是类似的, 因为对一个数组进行再多次的旋转, 都会有部分序列是有序序列, 所以我们是可以使用二分查找的.具体二分查找的思路是, 因为数组原先是升序排列的, 所以可以如果有部分序列存在 arr[a] <= arr[b], 那么a ~ b有可能就是有序的序列, 利用这个思路我们大体上把数组分为两种情况 :if (arr[left] <= arr[mid]) 说明 left --&g原创 2022-04-20 17:05:59 · 914 阅读 · 0 评论 -
24.<tag-数组和简单的遍历, 双指针>-lt- 674. 最长连续递增序列 + lt- 611. 有效三角形的个数 + lt-628. 三个数的最大乘积 ☆
文章目录lt- 674. 最长连续递增序列lt- 611. 有效三角形的个数lt-628. 三个数的最大乘积lt- 674. 最长连续递增序列[案例需求][思路分析]根据题目可知, 我们是对最长的连续递增序列进行计数, 所以肯定要维护一个计数器, 可以设置一个变量count作为计数, 由于数组中的连续递增序列有多个, 所以我们肯定还要另外设置一个res作为答案,每遍历完其中的一个连续递增序列, 首先count设置为1(最短长度为1), 因为后面还会有递增序列等待遍历, 然后每次对cout遍历完原创 2022-04-19 15:50:57 · 275 阅读 · 0 评论 -
23.<tag-数组和原地哈希>-lt.442. 数组中重复的数据 + lt.lt- 268. 丢失的数字 1
442. 数组中重复的数据[案例需求][思路分析][代码实现]原创 2022-04-18 16:11:56 · 403 阅读 · 0 评论 -
22.<tag-数组和前缀和>-lt.238-除自身以外数组的乘积(同剑指 Offer 66. 构建乘积数组) 2
lt.238-除自身以外数组的乘积[案例需求][思路分析一, 暴力解法]由题, 我们可以得出这么一个结论, 那就是每个数nums[i]等于它的前缀乘积 * 后缀乘积所以我们得出一个很容易想到的解法:对于原有数组中的每一个数nums[i], 我们借助前缀和写法, 分别使用一个for循环求出nums[i]的前缀之积和后缀之积,分别放在两个数组中然后再把用一个for循环把这两个数组对应index的求出来即可以得到最终结果数组[代码实现]class Solution { public原创 2022-04-09 16:50:16 · 181 阅读 · 0 评论 -
21.<tag-数组和快慢针, 二分查找 > lt.287. 寻找重复数1
lt.287. 寻找重复数[案例需求][思路分析一, ]挺恶心的一道题, 各种限制, 不准修改数组, 意味着原地哈希不能用了;空间复杂度为 O(1), 意味着使用集合存储遍历过的数字也不能用了;线性时间复杂度 O(n), for循环或者排序也不能用了;shiiiiiit, 该怎么解这道题呢?参考方法: 我们在解答这道题目时, 可能会想到用原地哈希解题, 什么是原地哈希呢? 就是说, 用数组的索引去映射index值, 比如nums[2] = 2, 即index =2的位置上的元素值为2原创 2022-04-08 16:20:10 · 469 阅读 · 0 评论 -
20.<tag-数组和前缀和(并用哈希表优化)> lt.560-和为 K 的子数组 1.2
lt.560-和为 K 的子数组[案例需求][思路分析一, 暴力解法: 双重for循环(固定一个边界)]固定了起点,即先固定左边界,然后枚举右边界.外层循环表示start不断的靠近数组末尾,内层循环表示不断从end到0倒着连加, 把每次==k的数, 在计数器count上+1;[代码实现]public class Solution { public int subarraySum(int[] nums, int k) { int count = 0;原创 2022-04-07 16:22:14 · 351 阅读 · 1 评论 -
19.<tag-数组和二分查找>-lt.162- 寻找峰值 + 面试扩展 1.5
lt.162- 寻找峰值[案例需求][思路分析]题目要求o(logN), 二分!题目要求我们找出一组数字序列中的任一峰值, 也就是找到这一组数字中任意一个数, 这个数的左右相邻的数都小于它.其实这道题里面最最重要的线索就是这句话, 你可以假设 nums[-1] = nums[n] = -∞ 。 , 这就意味着只要我们保证了一边的上坡, 就可以找到峰值.再重复一遍:这道题,最最最重要的是条件,条件,条件,两边都是负无穷,数组当中可能有很多波峰,也可能只有一个,如果尝试画图,就跟股票信原创 2022-04-07 15:31:43 · 142 阅读 · 1 评论 -
18.<tag-数组和原地哈希>-lt.41-缺失的第一个正数 + 剑指 Offer 03- 数组中重复的数字 3
什么是原地哈希? 就是在数组中建立像哈希表的那种映射关系(key-value 等价于 index-nums[index] ),通过使用数组代替哈希表, 能够大大减少空间复杂度, 具体是怎么样的映射关系, 还是要根据题目要求自己设定;缺点就是容易混乱, nums[nums[i]] 这样式儿的, 还是那句话, 多在草纸上写写画画!lt.41-缺失的第一个正数[案例需求][思路分析]仔细第一遍这个题目, 就会发现这题的目的无非就是验证数组中是否包含1,2,3,4,5,…N(N为数组.原创 2022-04-06 15:52:33 · 390 阅读 · 0 评论 -
17.<tag-数组和前缀和, 同余定理, 哈希表>-lt.523-连续的子数组和 + lt.525-连续数组 2, dbc
解答下面两题的话, 那必须得知道前缀和是什么, 怎么用呀, 点我lt.523-连续的子数组和[案例需求][思路分析一, 使用标准的前缀和求解]思路跟上面提到的笔者的旧文基本一致, 先用一个前缀和方法, 对数组遍历, 并把每个nums[i] + preSum[i - 1] 也就是每一个index 的前缀和进行求和, 返回前缀和数组 preSum;对前缀和数据进行双重for循环遍历, 要求外层i和内层j的差值在2以上, 因为题目要求每个子数组长度大于2嘛, 如果遇到某个i到j之间的子数组的.原创 2022-04-06 12:29:00 · 508 阅读 · 0 评论 -
16.<tag-数组和排序, 双指针, 哈希表>-lt.349-两个数组的交集 + lt.350-两个数组的交集 || + 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 0.3
lt.349-两个数组的交集[案例需求][思路分析一, 使用哈希表]由题, 题目要求返回的数不重复, 所以我们使用两个HashSet存储两个数组,对第一个数组, 我们用第一个hashset存储所有的元素,对于第二个数组, 我们通过与第一个数组比较, 把相同的元素存入第二个hashset然后再把hashset转为数组即可.class Solution { public int[] intersection(int[] nums1, int[] nums2) { S原创 2022-04-05 12:15:58 · 112 阅读 · 0 评论 -
tag数组-刷题预备知识-7. 差分数组 + lt.370-区间加法 + lt.1109-航班预计统计 + lt.1094-拼车 1.8
入门级栗子: lt. 370-区间加法[案例需求][思路分析]多次对部分区间进行加加减减的, 比较适合使用差分数组; 前缀和数组的话, 主要是用于 快速的求出某一段区间的累加和本题就是对一个数组序列中的部分区间进行加或减的操作, 正好能用差分数组使用差分数组的第一步当然是构建差分数组, 新建一个差分数组 diff[], 遍历原有数组nums[], 把num[i] - nums[i - 1]的值赋值给 diff[i]2.1 注意, i从1开始遍历构建差分数组后, 我们提供一个公用的方法.原创 2022-03-29 16:35:20 · 1238 阅读 · 0 评论 -
tag数组-刷题预备知识-6. 数组的前缀和(preSum), lt.303 + lt.304 1.2
前缀和前缀和一般用来用作区间求和, 它的每个值都是从**左边最初始位置的数(如下标0)**到它本身的和前缀和的主要使用场景: 原始数组不会被修改的情况下, 频繁查询某个区间的累加和, 原始数组不改变是相对于差分法来讲的.一维数组的前缀和其实可以把它理解为数学上的数列的前n项和(对于一个一维数组的前缀和)。我们定义对于一个数组a的前缀和数组s,s[i] = a[1]+a[2]+…+a[i].比如数组[1,3,5,7]的前缀和为[1,4,6,8], 借助前缀数组, 我们可以求出某一段区间原创 2022-03-28 12:25:49 · 1109 阅读 · 0 评论 -
15.<tag-数组和二分, 双指针>-lt.367-有效的完全平方数 + lt.27-移除元素 + lt.977-有序数组的平方 1.1
lt.27-移除元素[案例需求][思路分析][代码实现]lt.977-有序数组的平方[案例需求][思路分析][代码实现]lt.209-长度最小的子数组[案例需求][思路分析][代码实现]原创 2022-03-23 08:55:13 · 139 阅读 · 2 评论 -
14. <tag-数组和二分查找_2>-lt.240-搜索二维矩阵 || + lt.633-平方数之和 +lt.69-Sqrt(x) 1.8
lt.240-搜索二维矩阵 ||[案例需求] 优化1. 二分查找法[思路分析]本题, 从基础的倒序遍历解法上来看, 跟之前做过的一道题((lt.74-搜索二维矩阵)[https://blog.csdn.net/nmsLLCSDN/article/details/121284683])完全类似这里, 我们采用二分查找法解题;要注意到的是: 与 ((lt.74-搜索二维矩阵)[https://blog.csdn.net/nmsLLCSDN/article/details/121原创 2021-12-09 22:40:50 · 294 阅读 · 2 评论 -
13. <tag-数组和双指针(左右指针)>-lt.977-有序数组的平方 + lt.75-颜色分类 2.2
lt.977-有序数组的平方[案例需求][思路分析]简单题简单做, 遍历给定的有序数组的每个数, 把遍历到的每个数进行平方, 放入到新数组,而由于题目要求我们输出的数组是有序的, 如果数组中含有负数, 那么还要对得到的结果数组进行排序后, 再返回.[代码实现]class Solution { public int[] sortedSquares(int[] nums) { //新数组. 存放平方数 int[] res = new int [nums.原创 2021-12-08 15:55:51 · 485 阅读 · 1 评论 -
12. <tag-数组和双指针(快慢针)>-lt.80- 删除有序数组中的重复项 II 1.8
lt.40- 删除有序数组中的重复项 II[案例需求][思路分析][待补充][代码实现]class Solution { public int removeDuplicates(int[] nums) { //有序数组 + 原地交换==> 双指针==> 快慢针 //左指针指向不重复, 或只重复一次的一组数的末尾; //如何判断只重复一次? // l-1 = l = r, 说明 重复两次以了 //原创 2021-12-07 14:36:51 · 128 阅读 · 0 评论 -
11. <tag-数组和双指针(左右指针)>-lt.18-四数之和 2.8
lt.18-四数之和[案例需求][思路分析]本题也就是三数之和的拓展罢了, 前面我们三数之和怎么解的呢? --> 先对数组排序, 然后共一层for循环遍历第一个加数, 后面两个加数分别使用左指针和右指针向中间(L=R)逼近的方式进行遍历.同样的, 四数之和, 使用两层for循环遍历前两个加数, 使用左右指针遍历后两个加数;像这种数组中, 多个加数的和, 最重要的就是熟练掌握对加数的去重, 因为每个加数都是遍历得到的, 比如第一个加数a, 它(nums[i])和前一次遍历的数(nu原创 2021-12-07 14:31:17 · 878 阅读 · 0 评论 -
10. <tag-数组和双指针(左右指针)>-lt.344-反转字符串 + lt.16-最接近的三数之和 + lt.349-两个数组的交集 2
lt.344-反转字符串[案例需求][思路分析]原地逆转[代码实现]class Solution { public void reverseString(char[] s) { //左右指针法 int L = 0; int R = s.length - 1; char temp = ' '; while(L < R){ temp = s[L]; s原创 2021-11-24 12:20:59 · 257 阅读 · 0 评论 -
tag数组-刷题预备知识-5. 数组中的滑动窗口 1.5
一, 概述简而言之,滑动窗口算法在一个特定大小的字符串或数组上进行操作,而不在整个字符串和数组上操作,这样就降低了问题的复杂度,从而也达到降低了循环的嵌套深度。其实这里就可以看出来滑动窗口主要应用在数组和字符串上, 当你遇到让求子串,子数组的问题时就要考虑一下使用双指针滑动窗口了.二, 原理之后重复上述过程,先移动 right,再移动 left…… 直到 right 指针到达字符串 S 的末端,算法结束。如果你能够理解上述过程,恭喜,你已经完全掌握了滑动窗口算法思想。至于如何具体到问题,如何原创 2021-11-23 15:01:53 · 531 阅读 · 0 评论 -
9. <tag-数组模拟矩阵>-lt.498-对角线遍历 + lt.1424-对角线遍历 II 1.2
lt.498-对角线遍历[案例需求][思路分析]详细题解[代码实现]class Solution { public int[] findDiagonalOrder(int[][] mat) { // 每个矩阵对角线遍历次数为 count = m + n - 1;] //在这些遍历中, 先向上遍历, 再向下遍历; //注意, 每次遍历到边缘部位, 如果要回到下一个方向遍历的第一个元素, 还要对行数,和列数做出处理原创 2021-11-20 15:44:30 · 282 阅读 · 2 评论 -
8. <tag-数组和二分查找_1>-lt.704-二分查找 + lt.33-搜索旋转排序数组 +lt.34-在排序数组中查找元素的第一个和最后一个位置 + lt.35-搜索插入位置 2.3
lt.704 二分查找[案例需求][思路分析]二分法典型例题, 有什么好说的, 我秒了[代码实现]原创 2021-11-19 18:18:30 · 378 阅读 · 0 评论 -
tag数组-刷题预备知识-4.一通百通解决二分查找问题
文章目录1. 二分法查找法的基本思想2. 二分查找的时间复杂度3. 二分查找的几个模版3.1 模板一: 标准的二分查找3.2 模板二: 二分查找边界(左边界, 右边界, 或是左右边界)3.2 模板三: 二分查找极值点4. 总结1. 二分法查找法的基本思想二分法其实就是使用了分治法的思想;二分法的基本思想是将n个元素分成大致相等的两部分, 取nums[mid] 与 target 做比较:如果 target = nums[mid], 则找到target, 运行结束, 返回mid;如果 target原创 2021-11-18 11:50:55 · 549 阅读 · 0 评论 -
7. <tag-数组和哈希表>-lt.73-矩阵置零 + lt.1464-数组中两元素的最大乘积 + lt.169-多数元素 2.1(摩尔投票法) 2
lt. 73 矩阵置零(需要优化)本题同, 面试题 01.08. 零矩阵[案例需求][思路分析]第一次双重循环遍历矩阵(二维数组), 使用两个hashSet记录下0的行数和列数, 为什么用Set集合, 因为set集合内的数据无序不可重复, 去重;第二次双重循环遍历矩阵, 如果矩阵此时的行号i 或列号j 有一个被包含在上面的那两个集合中了, 把 matrix[i][j] 置为0即可;[代码实现]class Solution { public void setZeroes(i原创 2021-11-15 22:22:12 · 698 阅读 · 1 评论 -
6. <tag-数组和双指针(快慢针)>-lt.26- 删除有序数组中的重复项+lt.283-移动零 2.7 + 面试扩展 3 dbc
lt.26 删除数组中的重复元素[案例需求][思路分析][代码实现]class Solution { public int removeDuplicates(int[] nums) { //有序数组, 理应考虑到双指针, 至于何种双指针, 细读题目 // 定义左右指针L,R. L始终指向非重复的数组最后一位, R是遍历原数组, // 发现与L的元素不同, 立即移动L指针, 并交换L,R对应的元素 // L 与 R元素相同,原创 2021-11-14 13:53:43 · 1140 阅读 · 2 评论 -
5. <tag-数组模拟矩阵>-lt.48- 旋转图像(全部解法) + lt.59-螺旋矩阵 II 1.5
class Solution { public int[][] generateMatrix(int n) { //其实跟螺旋数组I的思路挺像的, 只不过之前是遍历螺旋矩阵, 这次是写入螺旋矩阵, //所以我们可以模仿前面螺旋矩阵的遍历方式,并同时插入规定的数 1-->n*n //指定四个角(数组的索引) int left = 0; int right = n -1; int top = 0;原创 2021-11-13 16:23:48 · 739 阅读 · 0 评论 -
4. <tag-数组模拟矩阵>-lt.867 转置矩阵 + lt.54-螺旋矩阵 + lt.74-搜索二维矩阵(重要) + 剑指Offer.29-顺时针打印矩阵 0.7
数组和矩阵结合的问题lt.54 螺旋矩阵[案例需求][思路分析]数组和矩阵一起结合考察(用数组模拟矩阵), 偏数学思想, 机器学习领域考察那是相当的多, 管咱屁事哈哈, 既然遇到了, 就把考察频度高的几道题甩出来螺旋矩阵,即顺时针读取矩阵, 记录到结果集合中并返回,我们最常用的解法就是, 记录矩阵的四个角, 不断的缩小角之间的范围, 直到目标数组中只剩下单纯的一列或一行数据, 甚至就剩一个数字, 同时也要记得把每次遍历的两个角之间的数, 添加到用于返回的集合中;看上图最下面的提示,原创 2021-11-12 17:52:14 · 1276 阅读 · 1 评论 -
3. <tag-数组和双指针(左右指针)>-leetcode.15-三数之和 + leetcode.167-两数之和 II 2
1. LeetCode 15. 三数之和 (Medium)[案例需求][思路分析]这道题可以看做是两数之和的更进一步, 所以根据两数之和的高级解法, 我们可以对三数之和使用hashMap法, 或者使用双指针中的左右指针法, 显然这道题, 包括前面的两数之和, 使用左右双指针都是比较容易理解的;本题目中未声明数组有序, 所以实现还需要对数组进行排序, 同时最最最重要的一点就是对数组中重复数字的处理, 在开始遍历第一个加数之前, 我们需要对第一个加数进行去重, 在遍历第一个加数之后, 我们还需要对第原创 2021-11-10 16:14:00 · 4342 阅读 · 1 评论 -
tag数组-刷题预备知识-3.数组中的 双指针 ,快慢指针,滑动窗口 (待补充,扩展)
一, 概述双指针主要是用于遍历数组, 两个指针指向不同的元素,从而协同完成任务.当然, 我们也可以延伸到多个数组的多个指针[用法和应用场景]一, 左右指针(相向双指针)[定义]1.1 lt1. 两数之和1.2 lt167. 两数之和IIlt 二分查找法删除有序数组中的重复项 ||lt 283 移动零lt 633. 平方数之和剑指Offer. 奇偶数排序二, 快慢指针(同向双指针)1.3 lt26. 删除有序数组中的重复项三, 滑动窗口(同向双指针)详细文章原创 2021-11-09 15:20:44 · 356 阅读 · 0 评论 -
tag数组-刷题预备知识-2. Java中数组和集合的各种排序方法 2.8
Collections.sort(集合工具类, 适合于自然排序)自然排序法, 实现Comparable接口, 实现其中的comapreTo(Obj obj)方法比较器, 实例化Comparator类, 重写其中的compre(Obajec obj1, Object obj2)参考资料:2.2 节, 集合排序的两种方法ArrayList集合排序方式总结List集合排序 sort方法...原创 2021-11-07 11:47:34 · 377 阅读 · 2 评论 -
tag数组-刷题预备知识-1. 集合和数组之间的转换(重要) 2.8
我们在手撕力扣的时候, 经常能遇到这样类型的题目: 要求你返回一个长度未知的数组或是需要暂时存储一个长度不定的数, 这个时候, 可能大多数想到的就是前期先把需要的数组或者字符串放到集合中, 根据题目需要选择是ArrayList亦或是k-v对的HashMap, 在返回的时候, 把集合转换为数组返回即可那么, 在遇到上述这种问题时, 我们就不可避免的要用到数组<---->集合之间的相互转换.一, 集合转为数组 (集合对象.toArray() / 集合对象.toArray( T[] a)).原创 2021-11-06 12:10:21 · 375 阅读 · 1 评论 -
2.<tag-数组>-leetcode.56-合并区间Java, Python实现 1
1. LeetCode 56. 合并区间 (Medium)[案例需求]以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6原创 2021-05-25 23:23:02 · 269 阅读 · 2 评论 -
?- LeeCode 53, 最大子序和(Easy)(暴力法, 分治法, 动态规划法)
2.x LeeCode 53, 最大子序和(Easy)(暴力法, 分治法, 动态规划法)[案例需求]Category Difficulty Likes Dislikesalgorithms Easy (54.28%) 3276 -Tagsarray | divide-and-conquer | dynamic-programming给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1原创 2021-07-01 16:36:44 · 183 阅读 · 0 评论