自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (1)
  • 收藏
  • 关注

原创 c++实现---二叉树先序、中序、后序遍历的递归与非递归实现以及层次遍历

二叉树先序、中序、后序遍历的递归与非递归实现以及层次遍历。#include<iostream>#include<vector>#include<stack>#include<queue>using namespace std;vector<vector<int>> res;vector<int> help; struct TreeNode { int val; struct TreeNode *left;

2020-09-02 18:47:45 760

原创 c++实现---链表之重排链表

题目描述:将给定的单链表 L: L0​→L1​→…→Ln−1​→Ln​重新排序为:L0​→Ln​→L1​→Ln−1​→L2​→Ln−2​→…要求使用原地算法,不能改变节点内部的值,需要对实际的节点进行交换。例如:对于给定的单链表{1,2,3,4},将其重新排序为{1,4,2,3}.思路:1.快慢指针寻找链表中间节点;2.原地逆序后半段链表;3.合并顺序的前半段和逆序的后半段,完成链表重排序。/** * Definition for singly-linked list. * stru

2020-08-11 01:00:26 665

原创 c++实现---动态规划之最短路径和问题

题目描述给定一个由非负整数填充的m x n的二维数组,现在要从二维数组的左上角走到右下角,请找出路径上的所有数字之和最小的路径。注意:你每次只能向下或向右移动。输入[[1,2],[5,6],[1,1]]输出8方法:二维dp,初始化第一行和第一列,在此基础上去求解class Solution{public: int minPathSum(vector<vector<int> > &grid) { int m=grid.size

2020-08-01 00:40:46 2994

原创 c++实现---敏感词替换

题目描述 大部分论坛、网站等,为了方便管理,都进行了关于敏感词的设定。在多数网站,敏感词一般是指带有敏感政治倾向、暴力倾向、不健康色彩的词或不文明语,也有一些网站根据自身实际情况,设定一些只适用于本网站的特殊敏感词。比如,当你发贴的时候带有某些事先设定的词时,这个贴是不能发出的。或者这个词被自动替换为星号 (*),或者说是被和谐掉了。请注意敏感词只有小写字母,文本如果中的大写字母当做小写字母处理,出现敏感单词,即使作为子串出现也要被和谐,多个子串重叠他们都要被和谐。例如当敏感词是gre,e

2020-07-22 13:33:46 1716

原创 c++实现---华为机试-求最小公倍数

题目描述:正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。示例1输入5 7输出35先求最大公约数,再求最小公倍数**求最小公倍数算法:**最小公倍数=两整数的乘积÷最大公约数**求最大公约数算法:**辗转相除法有两整数a和b:① a%b得余数c② 若c=0,则b即为两数的最大公约数③ 若c≠0,则a=b,b=c,再回去执行①例如求27和15的最大公约数过程为

2020-07-21 00:07:16 255

原创 c++实现---公共子串

题目:计算两个字符串的最大公共字串的长度,字符不区分大小写两个字符串输出描述:输出一个整数示例1输入asdfaswerasdfaswer输出6方法一:动态规划#include<bits/stdc++.h>using namespace std;int main(){ string a,b; while(cin>>a>>b){ int m=a.size(),n=b.size(); transform

2020-07-15 22:48:30 681

原创 c++实现---远亲不如近邻

题目描述牛牛最近搬到了一座新的城镇,这个城镇可以看成是一个一维的坐标系。城镇上有n个居民,第i个居民的位置为ai​。现在牛牛有m个搬家方案,在第i个方案中他会搬到位置xi​。俗话说的好,远亲不如近邻。现在牛牛想知道,对于每个搬家方案,搬家后与最近的居民的距离为多少。示例1输入3,2,[2,4,7],[5,8]输出[1,1]说明第一个方案搬到位置5,与5最近的居民在位置4,距离为1.第二个方案搬到位置8,与8最近的居民在位置7,距离为1备注:1≤n,m≤100000,0≤∣ai​∣,∣

2020-07-13 23:13:49 403

原创 c++实现---完全数计算

题目描述完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。给定函数count(int n),用于计算n以内(含n)完全数的个数。计算范围, 0 < n <= 500000返回n以内完全数的个数。 异常情况返回-1输入描述:输入一个数字输出描述:输出完全数的个数示例1

2020-07-13 19:53:59 6419

原创 c++实现---十六进制转化为十进制

题目:写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )输入描述:输入一个十六进制的数值字符串。输出描述:输出该数值的十进制字符串。示例1输入0xA输出10代码:#include<bits/stdc++.h>using namespace std;int main(){ string s; while(cin>>s){//多组输入 int bit=0; int ans=0;

2020-07-13 19:51:37 1813

原创 c++实现---孩子们的游戏(出圈问题)

题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!_)。请你试着想下,哪个小朋友会得

2020-07-12 18:06:33 1545 2

原创 c++实现---万万没想到之抓捕孔连顺

题目:我叫王大锤,是一名特工。我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺。和我一起行动的还有另外两名特工,我提议我们在字节跳动大街的N个建筑中选定3个埋伏地点。为了相互照应,我们决定相距最远的两名特工间的距离不超过D。我特喵是个天才! 经过精密的计算,我们从X种可行的埋伏方案中选择了一种。这个方案万无一失,颤抖吧,孔连顺!……万万没想到,计划还是失败了,孔连顺化妆成小龙女,混在cosplay的队伍中逃出了字节跳动大街。只怪他的伪装太成功了,就是杨过本人来了也发现不了的!请听题

2020-07-11 17:47:25 525

原创 c++实现---万万没想到之聪明的编辑(拼写纠错)

题目:我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写

2020-07-11 16:06:24 559

原创 c++实现---滑动窗口的最大值

题目:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6

2020-07-09 21:25:11 1679

原创 c++实现---左旋转字符串

题目汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!**题意抽象:**给定一字符串str,将str的[0…n)子串移动到[n…len)子串的后面。方法一:遍历数组代码如下:class Solution {public: string LeftRota

2020-07-09 17:26:25 485

原创 c++实现---和为s的连续正数序列

题目:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!方法一:暴力方法求和为sum的连续子序列,可用暴力方法,算法步骤:用指针i枚举目标序列的左边界用指针j枚举目标序列的右边界用指针k枚举区间[i, j

2020-07-08 22:29:53 324

原创 c++实现---和为s的两个数

题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。方法一:哈希法(简单但是需要额外空间)要求a + b = sum, 如果已知a, 那么b = sum - a;所以可以先将b添加入哈希中,然后遍历一遍数组设为a, 在哈希中寻找是否存在sum-a,然后再更新乘积最小值代码如下:#include<unordered_map>class Solution {public: //哈希法 vec

2020-07-08 16:30:48 541

原创 c++实现---数组中只出现一次的数(两个)

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。方法一:暴力法(借助哈希实现)很显然的方法,遍历一遍数组,用map记录出现的次数,然后再遍历一遍数组,找出出现1次的数字。代码#include<unordered_map>class Solution {public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { un

2020-07-08 11:25:19 948

原创 c++实现---二叉树的第k个结点

题目:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。思路:按照中序遍历的顺序遍历一棵搜索二叉树,则数值是递增顺序的,接着找到第k大即可。class Solution {public: void midOrdered(vector<TreeNode*>& help,TreeNode* pRoot){ if(pRoot->left) midOrdered(help,

2020-07-08 09:36:26 278

原创 c++实现---数字在排序数组中出现的次数

题目描述统计一个数字在排序数组中出现的次数。方法一:暴力方法查找数组中某个目标,不管数组是否有序,直接遍历一遍即可。代码:class Solution {public: int GetNumberOfK(vector<int> nums ,int k) { int ret = 0; for (int val : nums) { if (val == k) ++ret; }

2020-07-07 23:26:40 2604 1

原创 c++实现---两个链表的第一个公共节点

题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)方法:双指针法代码class Solution {public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { if(!pHead1 || !pHead2){ return nullptr; }

2020-07-07 16:49:04 192

原创 c++实现---数组中的逆序对

题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%100的数据,size<=2*10^5思路:能够抽象出:给定一个数组arr, 数组元素各不相同,求arr[i] > arr[j]

2020-07-07 14:52:09 1012

原创 c++实现---第一个只出现一次的字符

题目:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)方法:哈希法遍历一遍字符串,统计每个字符出现的次数。然后再遍历一遍字符串,找出答案。一:用map实现#include<unordered_map>class Solution {public: int FirstNotRepeatingChar(string str) { un

2020-07-02 17:01:29 903

原创 c++实现---丑数

题目:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路:只需要把得到的丑数不断地乘以2、3、5之后并放入他们应该放置的位置即可,而此题的难点就在于如何有序的放在合适的位置。1乘以 (2、3、5)=2、3、5;2乘以(2、3、5)=4、6、10;3乘以(2、3、5)=6,9,15;5乘以(2、3、5)=10、15、25;从这里我们可以看到如果不加策略地添加丑数是会

2020-07-02 15:54:31 1355

原创 c++实现---把数组排成最小的数

题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。题目抽象:给一个包含n个整数的vector,将n个整数组成一个最小的字符串。方法一:全排列暴力方法容易想到并且简单,直接列举所有的全排列取最小的,但是时间复杂度较高,可能无法满足面试需求。class Solution {public: void perm(int pos,vector<int>num

2020-07-01 17:05:51 1030

原创 c++实现---数据流中的中位数

题目描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到

2020-06-30 15:31:00 1423

原创 c++实现---数组中出现超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。题目抽象:给定一个数组,找出数组中的众数,若有,返回众数,若没有,返回0众数定义:数组中出现次数大于数组一般的元素前两种方法最容易实现,笔试或面试可以先做出来,然后根据面试要求不断优化方法一:哈希法map/unordered_map原理和使用整理: https://blog.csdn.

2020-06-29 10:35:28 907

原创 c++实现---序列化二叉树

题目描述:请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。序列化指的是将一个内存对象转化成一串字节数据(存储在一个字节数组中),可

2020-06-28 19:40:57 263

原创 c++实现---二叉搜索树与双向链表

题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。二叉搜索树:左子树的值小于根节点的值,右子树的值大于根节点的值,利用二叉搜索树的特点,转换为排序的双向链表可以考虑二叉树的中序遍历。中序遍历刚好满足左子节点、根节点、右子节点的顺序;先把左右子树都转换成排序双向链表之后再和根节点连接起来,整棵二叉搜索树变成了排序双向链表class Solution {public: void convertNode(TreeNode *p

2020-06-28 15:56:08 266

原创 c++实现---复杂链表的复制

题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解决本题最大的困难就是结点随机指针的赋值,因为并不清楚复制后的随机指针所指向的位置,因此需要确定随机指针位置,才能完成复制*解题思路:*1、遍历链表,复制每个结点,如复制结点A得到A1,将结点A1插到结点A后面;*2、重新遍历链表,复制老结点的随机指针给新结点,如

2020-06-27 20:37:26 228

原创 c++实现---二叉树中和为某一值的路径

题目:输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。题目抽象:给定一颗二叉树,找出满足从根节点到叶子节点和为sun的所有路径。思路:审清题意,问题是将根节点到叶子节点经过的结点形成一条路径。1.先是根节点,再是左右子节点,因此考虑前序遍历;2.考虑使用两个vector容器来保存路径,一个存放中间过程的每个值,另一个存放满足条件的路径;3.再树结构中计算和为某个值:方法一:新建一个辅助变量

2020-06-27 15:36:21 374

原创 c++实现---二叉搜索树的后序遍历

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。首先明确二叉搜索树的概念,从二叉搜索树的概念入手分析后序遍历的特点解题:二叉搜索树(BST)又称为二叉排序树,二叉查找树,有序查找树特点:其左子树(left subtree)下的每个后代节点(descendant node)的值都小于节点 n 的值;其右子树(right subtree)下的每个后代节点的值都大于节点 n 的值。从O(nlogn)到O(n

2020-06-27 12:27:45 289

原创 c++实现---之字形打印二叉树

题目:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。与之前的打印二叉树都是特别像,因此是同样的思路解决,使用bfs借助队列很方便的可以解决。首先回顾一下模板:如果不需要确定当前遍历到了哪一层,模板如下:void bfs() { vis[] = {0}; // or set queue<int> pq(start_val); while (!pq.empty()) { int

2020-06-23 22:18:06 541

原创 c++实现---多行从上往下打印二叉树

题目描述:给定一颗二叉树,从左到右从上到下打印二叉树。要求是要按层换行。方法:层次遍历打印二叉树,用队列实现。本题是上一篇的变形,区别就是这个需要考虑到层数。首先复习一下模板:如果不需要确定当前遍历到了哪一层,模板如下:void bfs() { vis[] = 0; queue<int> pq(start_val); while (!pq.empty()) { int cur = pq.front(); pq.pop(); for

2020-06-23 10:45:25 204

原创 c++实现---从上往下打印二叉树

从上往下打印出二叉树的每个节点,同层节点从左至右打印。题目抽象:给出一颗二叉树,按照从上到下,从左到右的顺序遍历节点。也就是从上到下一层一层的遍历。方法:层次遍历借鉴牛客大神的思路,层次遍历借助队列先进先出的特性来实现。所以做题总结出层次遍历的模板,后续就很简单了。这道题就是一个模板题,对队列的使用。因为要满足先进先出的特性。1.初始化:一个队列queue<TreeNode*> q, 将root节点入队列q2.如果队列不空,做如下操作:3.弹出队列头,保存为node,将node的左

2020-06-22 22:39:20 583

原创 c++实现---栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:因为弹出之前的值都会先入栈,所以借助辅助栈来实现。1.用指针i指向pushV的第一个位置, 指针j指向popV的第一个位置。2.如果pushV[i] != popV[j], 那么应该将push

2020-06-22 21:37:10 1061

原创 c++实现---包含min函数的栈

题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。分析题目:要求实现一个O(1)时间复杂度的返回最小值的栈。正常情况下,栈的push,pop操作都为O(1),但是返回最小值,需要遍历整个栈,时间复杂度为O(n),所以这里需要空间换时间的思想。方法:使用辅助栈首先需要一个正常栈m_data,用于栈的正常操作,然后需要一个辅助栈m_min,专门用于获取最

2020-06-20 10:54:24 310

原创 c++实现---顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.题目抽象:给一个二维矩阵,顺时针转圈打印矩阵。转圈说:把矩阵最外层看成一个圈顺时针转圈打印矩阵,那么我们可以先打印最外圈,然后再打印次外圈。也就是不断收缩矩阵的边界定义四个变量代表范围,lx、ly、rx、ry向右走存入整行的值,当

2020-06-19 21:12:20 935

原创 c++实现---二叉树的镜像

操作给定的二叉树,将其变换为源二叉树的镜像。题目抽象:给定一颗二叉树,将二叉树的左右孩子进行翻转,左右孩子的子树做相同的操作。方法一:递归(dfs)代码class Solution {public: TreeNode* dfs(TreeNode *r) { if (!r) return nullptr; TreeNode *lval = dfs(r->left); TreeNode *rval = dfs(r->right);

2020-06-19 15:21:32 651

原创 c++实现---树的子结构

题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)判断是否为子结构:树A和树B的根结点相等,并且树A的左子树和树B的左子树相等,树A的右子树和树B的右子树相等(根据分析去代码实现)方法:递归(dfs)代码实现:class Solution {public: bool dfs(TreeNode* r1,TreeNode* r2){ if(!r2){//如果待匹配结点为空,直接返回true return tr

2020-06-19 11:16:21 253

原创 c++实现---合并两个排序的链表

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则方法一:递归版本代码class Solution {public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(!pHead1){ return pHead2;//如果其中一个为空,则返回另一个,两个都为空直接返回nullptr } if(!pHead2)

2020-06-18 23:05:10 421 1

RunningMatchmen

C语言编写的一个二维场景游戏,能实现火柴人奔跑,跳跃,下蹲,直至通关,

2018-05-07

空空如也

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

TA关注的人

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