自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

享受当下

对未来最大的慷慨,就是把一切都献给现在。

  • 博客(43)
  • 收藏
  • 关注

原创 【Leetcode热题100】Leetcode 20. 有效的括号

Leetcode 20. 有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。这是一道典型的栈的题,将左括号按顺序入栈,碰到右括号时查看栈顶字符是否与其配对,如果不配对的话,就返回false。class Solution {public: bool isValid(string s) { if (1 == s.size() &a

2021-03-31 22:31:10 76

原创 计算机网络——1.概述

计算机网络——概述

2021-03-29 22:28:56 831

原创 【Leetcode热题100——深度优先搜索】Leetcode 104. 二叉树的最大深度

Leetcode 104. 二叉树的最大深度题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。题目比较简单,代码使用分治的方法实现。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode

2021-03-24 20:43:30 65

原创 【Leetcode热题100——宽度优先搜索-二叉树】Leetcode 102. 二叉树的层序遍历

Leetcode 102. 二叉树的层序遍历题目描述:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。一道非常标准的宽度优先搜索题目,直接套算法模板就成。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0),

2021-03-23 20:51:52 140

原创 【Leetcode热题100——宽度优先搜索-二叉树】Leetcode 101. 对称二叉树

Leetcode 101. 对称二叉树题目描述:给定一个二叉树,检查它是否是镜像对称的。宽度优先搜索(迭代)的解法:思路1:使用队列,利用宽度优先搜素对二叉树进行层级遍历,把每一层节点的值val放入一个数组中,然后判断该层节点是否为镜像,如果不是就返回false。这里当某个节点为null时,这里的处理是将INT_MAX放入数组中。思路2:仍然使用队列,利用镜像对称的性质。加入队列时,将一颗树加入两次,然后就是将第一次放入的树的节点加入队列,将另第二次放入的树的右子树加入队列,按照镜像对称的性质,这

2021-03-23 20:20:22 177

原创 【进程线程】1. 概念和区别

进程和线程——1. 概念与区别一、概念1. 进程进程本质上是正在执行的一个程序,是对运行时程序的封装,每个进程会具备一个地址空间,在该空间内可以进行读写。该地址空间中存放可执行程序、程序的数据、堆栈,同时与每个进程相关的还有资源集,包括寄存器(含程序计数器和堆栈指针)、打开文件的清单、突出报警、有关进程清单,以及运行该程序所需的所有其他信息。进程基本上是容纳运行一个程序所需所有信息的容器。因此,对于有线程的系统,说进程是资源分配的独立单位(此时,线程做资源调度的独立单位)。对于无线程系统,进程是资源分

2021-03-23 14:26:31 90

原创 【Leetcode热题100——二叉树(递归)】Leetcode 98. 验证二叉搜索树

Leetcode 98. 验证二叉搜索树题目描述:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。解题思路:使用递归,时刻验证左边节点数值的范围是在最小值(初始值设为INT_MIN)和当前节点之间,右边节点的数值范围是在当前节点和最大值(初始值设为INT_MAX)之间,如果不满足就返回false。代码:/** * Definition f

2021-03-19 22:53:23 110

原创 Leetcode 19. 删除链表的倒数第N个节点

Leetcode 19. 删除链表的倒数第N个节点题目描述:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?解题思路:为了只扫描一趟就实现。使用了两根指针,第二根指针比第一根指针慢N步,这样当第一根节点到达结尾元素时,第二根节点就停在倒数第N个节点位置。这样就可以删除第N个节点了。因为要删除节点,所以还需要知道节点的前继节点,因此这里第二根节点最初指向head的前一个节点,这样其最终状态指向的是倒数第N个位置的前一个节点。代码:/** * D

2021-03-18 22:28:52 79

原创 【DL】图像去噪中的patch size是什么(1篇文章链接和1段代码)

图像去噪中的patch size是什么(1篇文章链接和1段代码)写在前面,因为自己不做图像相关的研究,所以具体内容也不敢妄加总结,自己感觉貌似就是将一整张图分成一块一块的进行处理,每个块之间可以重叠。但具体大家可以看下面的文章链接和代码示例。文章链接:Patch-based models and algorithms for image denoising: a comparative review between patch-based images denoising methods for add

2021-03-18 15:02:04 6298

原创 【宽度优先搜索】Leetcode 1162. 地图分析

Leetcode 1162. 地图分析题目描述:你现在手里有一份大小为 N x N 的 网格 grid,上面的每个 单元格 都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距离是最大的。我们这里说的距离是「曼哈顿距离」( Manhattan Distance):(x0, y0) 和 (x1, y1) 这两个单元格之间的距离是 |x0 - x1| + |y0 - y1| 。如果网格上只有陆地或者海洋,请返回 -1。这道题属于

2021-03-16 22:32:18 132

原创 【Leetcode热题100】Leetcode 17. 电话号码的字母组合

Leetcode 17. 电话号码的字母组合题目描述:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。是一道求全部组合的题,用DFS来做。代码使用unordered_multimap+DFS,时间运行效率和内存消耗都不错。代码:class Solution {private: unordered_multimap<char, string> phoneKe

2021-03-14 21:55:12 230

转载 【Keras】Keras中fit_generator的使用,及fit、fit_generator、和train_on_batch的区别

Keras中fit_generator的使用,及fit、fit_generator、和train_on_batch的区别Introduction在本教程中,您将了解Keras .fit和.fit_generator函数的工作原理,包括它们之间的差异。为了帮助您获得实践经验,我已经提供了一个完整的示例,向您展示如何从头开始实现Keras数据生成器。今天的博客文章的灵感来自PyImageSearch读者——Shey。Shey问道:...

2021-03-14 17:00:11 2185 3

原创 利用matlab,在信号上添加给定SNR(dB)或给定方差的高斯白噪声

利用matlab,在信号上添加给定SNR(dB)或给定方差的高斯白噪声1. 添加给定SNR的噪声向信号添加SNR=53dB的高斯白噪声rng defaultSNR = 53;y = randn(size(x))*std(x)/db2mag(SNR);s = x + y;官方文档链接:https://ww2.mathworks.cn/help/signal/ref/snr.html?searchHighlight=snr&s_tid=srchtitle2. 添加给定方差的噪声向

2021-03-14 16:39:01 5917

原创 【tensorflow】tf.repeat实现单一元素扩展为具有重复元素的二维图像

tf.repeat实现单一元素扩展为其重复元素的二维图像目标:将一维数据[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]扩展为9张二维图像(第一张图像中元素全为0,第二张的全为1,以此类推…)代码:import numpy as npimport tensorflow as tfinpt = np.arange(10)inpt = inpt.T # 生成[0, 1, 2 ... , 9]的列向量inpt = np.expand_dims(inpt, axis=1) # 对inp

2021-03-14 16:20:15 2525

原创 Leetcode 15. 三数之和

Leetcode 15. 三数之和题目描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。解题思路:遍历整个数组,将0-num[i]作为目标值,转化为两数之和的问题,再用相向双指针(所以需要提前对数组进行排序)去做;这里有一个去重的问题,需要考虑两种重复:(1)目标相同会引发重复;(2)在一个目标下,寻找两数之和时,这两个数如果相同会造成重复。

2021-03-13 20:30:48 103

原创 【python】numpy扩维方法expand_dims简单使用

numpy扩维方法expand_dims简单使用x原先为1维(只有轴axis=0)的数组,使用expand_dims扩展出1维(扩展出轴axis=1)>>> x = np.array([1, 2])>>> x.shape(2,)>>> x = np.expand_dims(x, axis=1)>>> xarray([[1], [2]])>>> x.shape(2, 1)...

2021-03-13 17:53:02 2051 1

原创 【python】numpy实现循环过程中重置shuffle所用随机种子,达到shuffle混洗之后的结果相同和不同的方法

numpy实现循环过程中重置shuffle所用随机种子,达到shuffle混洗之后的结果相同和不同的方法1. 使用确定种子实现每次shuffle之后结果相同在for循环内部,使用rng = np.random.default_rng(12345)语句重置种子,这样混洗之后结果相同for i in range(2): rng = np.random.default_rng(12345)# rng = np.random.default_rng() arr = np.arange

2021-03-13 11:00:05 1919

原创 Leetcode 11. 盛最多水的容器

Leetcode 11. 盛最多水的容器题目描述:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。解题思路:使用双指针,一根指针 i 指向开头位置,另一根指针 j 指在结尾。设置全局变量maxAREA初始为0,始终更新维持maxAREA为两根指针之间最大的面积,如果左指针 i 处的

2021-03-12 22:22:20 94

原创 【Leetcode热题100】Leetcode 10. 正则表达式匹配

Leetcode 10. 正则表达式匹配题目描述:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。代码用的动态规划,但完全参照答案,答案解析看的差不多理解,但这道题对目前的自己来说确实有难度,动态规划的各种类型接下来找时间都得学一学,不然还是差很多的。再此记录一下吧。代码:class Solution {public:

2021-03-11 21:25:03 97

原创 【数组排序——归并排序】Leetcode 912. 排序数组

Leetcode 912. 排序数组(归并排序)题目描述:给你一个整数数组 nums,请你将该数组升序排列。基本思想:它的原理是将要排序的数组先找中心点mid=(start+end)/2,然后分成2半,左半部分和右半部分,然后继续对左半部分和右半部分同样找中心分成两半,直到无法再分,此时左半部分和右半部分都是一个单值了;然后开始归并(过程中进行排序),将这两个单值合并成一个有序的两个值的序列,再向上依次归并,就是一开始分成2半的逆过程(归并过程中会进行排序),最后全部归并完,就会得到排好序的序列了。

2021-03-10 19:18:52 188

原创 【数组排序——快速排序】Leetcode 912. 排序数组

Leetcode 912. 排序数组(快速排序实现)题目描述:给你一个整数数组 nums,请你将该数组升序排列。基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。中心思想:将比枢轴值小的放在左边,比枢轴值大的放在右边。时间复杂度:最优的情况下:复杂度为O(nlogn), 此时每次所选的枢轴值都能将待排序列均匀的划分成两部分。最坏的情况下:复杂度为O(n^2),此时待排序列为正序

2021-03-09 20:11:01 414

原创 【学习笔记】进程与线程

进程与线程本文摘自https://github.com/huihut/interview#database1. 简要概念对于有线程系统:进程是资源分配的独立单位 线程是资源调度的独立单位对于无线程系统:进程是资源调度、分配的独立单位2. 进程之间的通信方式及优缺点2.1. 管道(PIPE)(1)有名管道:一种半双工的通信方式,它允许无亲缘关系进程间的通信 优点:可以实现任意关系的进程间通信 缺点:a. 长期...

2021-03-09 19:10:00 79

原创 【DL】网络模型训练的一些指导原则

深度学习中网络模型训练的一些指导原则1. 过拟合和欠拟合机器学习的根本问题是优化和泛化之间的对立。优化(optimization)是指调节模型以在训练数据上得到最佳性能(即机器学习中的学习),而泛化(generalization)是指训练好的模型在前所未见的数据上的性能好坏。机器学习的目的当然是得到良好的泛化,但你无法控制泛化,只能基于训练数据调节模型。训练开始时,优化和泛化是相关的:训练数据上的损失越小,测试数据上的损失也越小。这时的模型是欠拟合(underfit)的,即仍有改进的空间,网络还没有对

2021-03-09 16:03:25 641

原创 【数组排序——堆排序】Leetcode 912. 排序数组

Leetcode 912. 排序数组(堆排序实现)题目描述:给你一个整数数组 nums,请你将该数组升序排列。补充小知识:堆就是一个完全二叉树堆排序的基本思想:将要排列的数组构建为一个大顶堆(升序的话),这一过程可以在原数组中进行;然后将堆顶元素(也就是最大值)和堆数组末尾元素交换,此时末尾就是最大值;再将数组中前n-1个元素重新调整为大顶堆,此时的堆顶就是原n个元素的数组的次大值。如此反复进行,就会得到一个升序排列的数组。中心思想:将每棵子树调整为大顶堆(升序的话)时间复杂度:初始构建堆时

2021-03-08 21:26:21 380

原创 【C】C语言实现对文件或目录的重命名:rename()函数

C语言实现对文件或目录的重命名:rename()函数1. 头文件包含#include <stdio.h>2. 函数原型int rename(const char * oldname,const char * newname);上述函数声明中:参数oldname表示要修改的文件名;参数newname表示修改后文件名;修改成功则返回0,如果修改的文件名与以修改的文件名重名,或者修改的文件不存在时返回非0值(-1)。3. 例子define _CRT_SECURE_NO_WARN

2021-03-08 19:22:53 3085

原创 匹配滤波器为何使得输出SNR最大?

匹配滤波器为何使得输出SNR最大?博客摘自:匹配滤波器的物理解释所谓的最优滤波器,实际上都是在某个准则下的最优。匹配滤波器对应的最优的准则是输出信噪比(SNR)最大。而且还有一个前提条件是在白噪声背景下。推导很多地方都有,最后的结果就是匹配滤波器的表达式为:H(f)=S*(f)也即是说,匹配滤波器的频率响应是输入信号频率响应的共轭。这看起来又很简单,那么如何从物理直观上理解匹配滤波器呢?一方面,从幅频特性来看,匹配滤波器和输入信号的幅频特性完全一样。这也就是说,在信号越...

2021-03-08 10:44:40 3900

原创 【并查集】Leetcode 778. 水位上升的游泳池中游泳

Leetcode 778. 水位上升的游泳池中游泳题目描述:在一个 N x N 的坐标方格 grid 中,每一个方格的值 grid[i][j] 表示在位置 (i,j) 的平台高度。现在开始下雨了。当时间为 t 时,此时雨水导致水池中任意位置的水位为 t 。你可以从一个平台游向四周相邻的任意一个平台,但是前提是此时水位必须同时淹没这两个平台。假定你可以瞬间移动无限距离,也就是默认在方格内部游动是不耗时的。当然,在你游泳的时候你必须待在坐标方格里面。你从坐标方格的左上平台 (0,0) 出发。最少耗时多久你

2021-03-07 22:35:40 163

原创 【Matlab】Matlab将mat文件保存为txt文件

Matlab将mat文件保存为txt文件1. 使用dlmwrite函数实现将矩阵M写入文件'myFile.txt',用制表位字符分隔并使用 3 位数精度。dlmwrite('myFile.txt',M,'delimiter','\t','precision',3) 可以查看文件中的数据:type('myFile.txt')使用 6 位小数精度将矩阵M导入到文件。dlmwrite('myFile.txt',M,'precision','%.6f');将矩阵M写...

2021-03-07 19:10:55 6982

原创 并查集

并查集并查集,简单来说,是一种用来解决集合查询和合并的数据结构。支持支持O(1)查询(find),和O(1)合并(union)。1. 并查集可以干什么判断两个值是否在同一集合(find 操作)将两个集合合并(union 操作)2. 并查集的时间复杂度上面说find和union是O(1)的,但准确来说是logn,注意这个和logn是不一样的,这logn大家可以查一下,它在n很大很大的时候,它仍然很小很小。所以我们才说是O(1)。3. 查询find和合并union的模板(C++)int Fi

2021-03-06 22:24:44 803

原创 multimap容器的使用方法

C++中multimap容器的使用方法陈列multimap 容器具有和 map 相同的特性,该容器也会自行根据键的大小对存储的所有键值对做排序操作,和 map 容器的区别在于,multimap 容器中可以同时存储多(≥2)个键相同的键值对。1. 头文件包含#include <map>2. 构造函数注意:**和 map 容器相比,multimap 未提供 at() 成员方法,也没有重载 [] 运算符。**这意味着,map 容器中通过指定键获取指定指定键值对的方式,将不再适用于 mult

2021-03-06 22:03:24 403

原创 map的使用方法

C++中map的使用方法map是C++中STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。map内部使用红黑树实现(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,这种排序是针对键值Key的大小而言的。1. 头文件包含#include <map>2. 构造函数1. //默认构造函数 map<c

2021-03-06 21:49:35 642

原创 【并查集】Leetcode 547.省份数量

Leetcode 547. 省份数量题目描述:有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。

2021-03-06 21:11:07 249

原创 multiset的使用方法

C++中multiset的使用方法多元集合(MultiSets)的特性以及用法和集合(Sets)完全相同,唯一的差别在于它允许键值重复,即multiset中允许有重复元素,而set中不允许有重复元素。头文件包含##include <set>构造函数和Set相同1. set<int> first;//初始化一个int类型的空set(默认构造器)2. int myints[]= {10,20,30,40,50}; set<int> second (my

2021-03-05 22:01:41 1240 1

原创 【python】使用numpy.pad()实现数组两边的数值填充的简单使用

使用numpy.pad()实现数组两边的数值填充的简单使用1. 函数接口numpy.pad(array,pad_width,mode ='constant',** kwargs )返回值:填充后的数组2. 例子数组前面填充2个4,数组后面填充3个6。a = [1, 2, 3, 4, 5]np.pad(a, (2, 3), 'constant', constant_values=(4, 6))array([4, 4, 1, ..., 6, 6, 6])...

2021-03-04 22:41:40 436 1

原创 信号长度不同,如何做相同点(比如128点)的FFT

信号长度不同,如何做相同点(比如128点)的FFT有的函数接口不像matlab中的fft函数,第二个参数可以传入想要做的定点fft点数。比如tensorflow的fft函数就不行,只能对信号直接做FFT,这时得到的FFT结果的长度是与信号长度一样的。这时候我们要自己做一些处理,实现一定点数的FFT。1. 长度小于128点的信号对于长度小于128点的信号,先补零到长度为128,再做FFT。2. 长度大于128点的信号对于长度大于128点的信号,先截断到长度为128(从低到高128个点),再做FFT。

2021-03-04 22:19:12 1605 1

原创 Word的”交叉引用“和”插入题注“快捷键设置

Word的”交叉引用“和”插入题注“快捷键设置在MSWord2019中,可以自定义设置快捷键。方法如下:文件-选项-自定义功能区-键盘快捷方式(自定义)。具体过程如图所示。最后,按照上述流程将插入题注(InsertCaption)的快捷键设置为Alt+C;将插入交叉引用(InsertCrossReference)的快捷键设置为Alt+J。参考博文:Word 文档设置快捷键...

2021-03-04 21:56:08 16230 4

原创 Word公式居中、自动编号及交叉引用

Word公式居中、自动编号及交叉引用本文使用“制表符+样式分隔符”的方法将公式居中。此外,使用“自动图文集”实现下次公式编辑时,可以重复利用该公式的居中样式。1. 打开WORD中的“显示/隐藏编辑标记”这样是为了编辑过程看到WORD中隐藏的一些标记,包括制表符、分页符、空格等。位置如下:2. 插入公式及自动编号2.1 利用MathType插入一个公式到WORD文档。2.3 插入样式分隔符在公式后方按快捷键Ctrl+Alt+Enter。”显示/隐藏编辑标记“打开的话,这里会有虚线方框。2

2021-03-04 21:46:36 7065 4

原创 set的使用方法

C++中set的使用方法set是C++容器类中的一种关联容器,内部数据结构采用红黑树RB-tree实现,支持快速访问,删除等操作。set是关联集合,可反转,可排序,且键是唯一的,所以不能存储多个相同的值。set的特性是,所有元素都会根据元素的键值自动被排序。set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许有两个元素有相同的键值。另外,不能通过set的迭代器改变set的元素值,因为set的元素值就是其键值,关系到set元素的排列规

2021-03-04 08:26:29 2035 1

原创 【Leetcode热题100】Leetcode 5.最长回文字串

Leetcode 5.最长回文字串题目描述:给你一个字符串 s,找到 s 中最长的回文子串。这道题先使用接龙型动态规划,但时间复杂度超了。然后参考了解析,使用了坐标型动态规划,新开一个二维数组f[n][n],这里f[i][j]表示s[i]~s[j]的子字符串是否为回文串,若是f[i][j]=true,否则为false。然后维持一个最长的子串。判断是否为回文串时,利用特点:对于一个子串而言,如果它是回文串,并且长度大于 2,那么将它首尾的两个字母去除之后,它仍然是个回文串。class Solutio

2021-03-03 22:15:54 129 1

原创 Leetcode 4. 寻找两个正序数组的中位数

Leetcode 4.寻找两个正序数组的中位数题目描述:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。解题思路:新开一个数组,大小为m+n,对两个数组进行归并排序放入新开的数组中,当找到所需的中位数下标位置时,就可以计算中位数,将值返回。另外就是,对于偶数和奇数,中位数的计算方法不同。对于长度为n的正序数组nums,这里方便公式表达,假设数组下标从1开始。如果n是偶数,那中位数为**(nums[n/2]+nums[n/2

2021-03-02 22:39:36 148

空空如也

空空如也

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

TA关注的人

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