- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565752 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174948
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
0 t; h" O( h& ?0 r
2020最新-精选基础算法100题(面试必备)% l# M3 m: d2 j8 C K. ?
0 T7 H* A9 [% o4 g- R0x01.概述: @0 ^" p4 z+ u5 V! p. |7 M1 V
作为一个程序员,算法能力必不可少,虽然不一定是算法工程师,但是算法还是彰显着个人的编码能力,面试中也经常会被问到,甚至会被要求临场做算法题,所以,还是好好积累吧。5 X: Z I8 q% g' _' n; _
. `2 F9 N+ C/ r, t- w6 k, y: ~% L
( m% n% T2 n" v& K1 [ t个人其实对算法挺有兴趣的,从3月份开始,陆陆续续刷了一些算法题,把一些有意义的记录下来了,也顺便写了一些题解,个人认为,还是挺有收获的。
& q+ x8 s4 E% h& p2 H$ J之前写了一篇算法文章的目录,不过后来就忘了实时去更新了,于是现在,想把之前做过的一些有意义的算法题分享出来,刚好整理了100篇比较有意义的。希望对大家有所帮助。" H) k8 g5 R" O7 R9 d7 _
2 k& A: C3 q$ W2 m3 |) M C8 l- O; r6 y. H; S: k
0 U6 B$ [* V+ B5 Y: r) H* W3 A
; ]# ^3 t& b$ g' ~( S/ M8 }3 W, l3 Y0x02.说明" z; H7 V* ~4 d4 [! g, q5 j+ K
关于语言的选择:
" g1 ^8 T0 g% c0 H6 g! ^9 w
0 j: r: ~. K; m* d( g, G
/ x+ d6 ?/ r0 y前半段主要用C++写的,后半段主要用Java写的。
/ v# R x# |; E" ^4 w/ \% G其实什么语言没有太大区别,主要是思想,用着顺手就行。6 L$ a% R8 Z1 V+ J# Z
这里安利一波Java,哈哈,Java写算法题写多了,真的比较舒适。
, y" h1 o2 R4 l4 o2 y" @! L: Z关于文章类型的选择:* i2 Z, [6 l5 l+ z1 y
6 K( J3 F! [ W* T" L& D) `$ u' g! ^5 t1 k) G4 k
选取了一些较为基本的算法类型,都是比较常见的。
0 [2 T/ Z2 m4 k) r. o不涉及ACM等难度太高的题,大佬们移步哈。
; W0 R3 B. i. i7 o1 H3 V都是一些比较经典的问题。: k3 }. K4 @6 V7 j
关于题目的来源:
( R0 r" u& T: _* `- a" n4 y$ \1 h* O( |' \8 g
) F) q+ S8 P: r2 y# Q- }平时主要刷题的平台是Leetcode,因为是函数式的,比较方便。
' r5 C( N. J2 u5 w还有一些是在《剑指offer》,《程序员面试金典》中看到比较好的,所有题目后面都给出了出处。) q3 D; u( g7 h* z9 L
关于题解的说明:/ W7 x! x+ l) O; T% _8 n& i# l
0 x% F! M5 m: d
9 i- j% P% V0 r/ Q题解是我自己所写,有时候也参考了一些官方题解的思想,可能更好理解。
1 k7 [/ n' G- S0 l0 z题解的代码都提交测试过的,保证暂时没有问题。
2 z% X E" X, V6 c" D个人水平有限,可能文章里面存在一些问题,还望大佬多多指点。
6 v4 G/ m' |7 e9 \/ N2 a2 ]6 ^每个题目附带了原文链接,不喜欢阅读我题解的小伙伴们也可以直接移步原出处哈。
, S+ }6 D0 L8 X- l) c9 G关于算法能力提升的一些意见:
8 K. a/ A( X( N8 j6 X) V I% j* E0 ]8 h" i- F( W! C1 Q& S
' c5 S0 l( b( @: ^3 q1 V
个人认为,算法来说,思想最为重要,有算法的严谨思想,才是算法能力提升的基础。' a& u/ M" U; i6 L
刷题就是培养算法思想的一种实际行动。
% }0 {% X9 @3 N, A% s8 [ o, v5 x好好理解透一个问题,或者一类问题,远胜于你麻木的刷大量的题。+ ~# d8 |& T' ^& t& K
算法确实也有模板题,只需要照着模板就能做出,但问题是,照着模板就一定能做出来嘛,是否真正理解了为什么这个模板可以通用。
( g3 Q6 b# Q2 B8 t关于分类:: i2 a) y' o$ i& u X
& l; V+ p% H* h" D, e2 J \
8 q! S3 Q, p+ n* }9 H8 A有些分类确实不太好分,所以就单独列出来了。
+ c! K" }" d" N: c* r! T" r- F7 ]主要的还是区分开来了。4 L* @) F Y: o6 [: C0 R
0x03.正文–精选算法100题(附个人题解)" _4 x: L2 p$ x4 n! c" R; S
分类一:动态规划(dp) H, G6 |! C( r
没错,就是你熟悉的dp,dp说简单也简单,说难也实在是太难了,重点是如何找到里面的状态转移方程。经过这些题目的训练,希望你能有一些初步的dp思路了。, N. J( c+ R6 v* i3 J+ o Y
0 |; h2 B4 @2 v$ V: X! g, j. W0 |5 R! y; o
题目名称 来源 个人题解 备注
! ^/ _( K$ i- h4 }! R4 a01.打家劫舍 Leetcode题198:戳我前往 戳我前往 估计是最好的dp入门题型了
3 z# {- W& j2 F: ~& L' d" X02.斐波拉契数列 经典问题 戳我前往 确实比较经典哦~
6 ~! ~" ` @+ S8 g' c1 u* {, E03.零钱兑换问题 Leetcode题322:戳我前往 戳我前往 也是一个比较经典的问题了- r& d9 h7 f. F- N! }6 G
04.零钱兑换II Leetcode题518:戳我前往 戳我前往 零钱问题通用解法
$ W9 w* y+ [2 M4 X; [05.最长上升子序列 Leetcode题300:戳我前往 戳我前往 堪称数组dp中的典范) ?6 U$ ~/ b# L
06.牌型种数 蓝桥杯:链接暂无 戳我前往 二维动态规划,要仔细想想% y- h( \% B0 z, A E
07.最低票价 Leetcode题983:戳我前往 戳我前往 如何状态转移?
2 N8 }8 m! M& K! B" l" F08.不同的二叉搜索树 Leetcode题152:戳我前往 戳我前往 你会发现dp的神奇之处- O# I/ d3 G; L/ O* l
09.礼物的最大价值 《剑指offer》题47 戳我前往 优化dp的思路
* O& j, o' [0 p. ^) r* l10.接雨水 Leetcode题42:戳我前往 戳我前往 需要仔细思考以发现dp
4 t7 x' j; D$ r: D6 ]# P2 D. ^. y0 v8 Z11.编辑距离 Leetcode题72:戳我前往 戳我前往 最为经典的二维dp题型9 t) p$ |3 J" Y
12.买卖股票的最佳时机(6题) Leetcode6题:戳我前往 戳我前往 统一化的dp思维,棒
1 ]* P/ B" [* _* F* q4 f13.鸡蛋掉落 Leetcode题887:戳我前往 戳我前往 有些难度哦~
% E( x9 _: s7 x9 o14.最大正方形 Leetcode题221:戳我前往 戳我前往 矩阵中的dp思路1 a7 n5 n: k" f
15.和为K的子数组 Leetcode题560:戳我前往 戳我前往 前缀和也是dp的思路
5 W6 _. a+ G& }' G9 U$ P分类二:搜索类(DFS,BFS,回溯,暴力搜索)7 Q5 W2 L2 }) T5 o& g+ G
搜索类的算法题应该是随便哪个算法比赛都可以看到,虽然经典,但在这上面还是会有比较难的问题,所以,掌握基本思路和套路就显得格外重要。# Q% r3 W. k: c
/ T9 |+ W+ O4 [1 J. o8 @/ f: L3 s. H' b5 ^: j# g/ E* L; e7 d8 @
题目名称 来源 个人题解 备注
# t; I& c" `7 B W; X `" e5 i16.图的深搜和广搜 经典问题 戳我前往 搜索中的经典问题% q: @! n1 D4 v0 V3 X
17.方格填数 蓝桥杯:链接暂无 戳我前往 揣摩一下DFS的思路
4 _2 n& A. U) Y4 {7 O( T18.路径之谜 蓝桥杯:链接暂无 戳我前往 经典改编迷宫问题
$ _4 M8 F( S% C. B) U, m19.岛屿的最大面积 Leetcode题695:戳我前往 戳我前往 最常见的矩阵中的DFS
$ i3 d5 U3 R& _20.逃离大迷宫 Leetcode题1036:戳我前往 戳我前往 各种搜索思想都可以应用 j3 v! X+ M4 O, O8 M
21.单词搜索 Leetcode题79:戳我前往 戳我前往 字符串中的搜索& q8 A5 z: p* [ n9 U _+ s
22.检查网格中是否存在有效路径 Leetcode题1391:戳我前往 戳我前往 思考另类的搜索
6 ^+ _5 v3 e' B23.地图分析 Leetcode题1162:戳我前往 戳我前往 多源BFS
& m( X8 ^) p( _5 B4 @8 A# G' l24.机器人的运动范围 《剑指offer》13题 戳我前往 DFS进行计数的基本思路% R, R% T. p/ v: K) @4 J' a
25.括号生成 Leetcode题22:戳我前往 戳我前往 用DFS生产括号% C1 C! I a9 |6 N- S7 @! v
26.01 矩阵 Leetcode题542:戳我前往 戳我前往 矩阵中的搜索
0 V. r4 A( ?! r' L6 l$ R27.岛屿数量 Leetcode题200:戳我前往 戳我前往 根据需求使用DFS5 e* }3 a7 v5 Z( x5 J# W7 L, K V8 q
28.全排列问题 Leetcode题46:戳我前往 戳我前往 最经典的回溯算法6 l' e" K, ^( k1 k; A* J; E- A
分类三:字符串
n6 \/ K! i& b/ y7 a) K% y; f别忽视字符串的算法问题,它难起来可以非常难,简单的也很简单,面试喜欢提问,而且特别容易出错,需要引起重视。* ?4 |, N, ~1 P( z' h1 h& x2 y
6 p$ p4 z) f: A1 P8 b$ d( D3 H
$ Q5 C. H% s# Y7 d9 t+ w& g2 z
题目名称 来源 个人题解 备注 E% _. n- H# d3 w) k* g
29.KMP算法 经典算法 戳我前往 经典字符串匹配算法
. V: H1 m3 d8 Y t30.拼写单词 Leetcode题1160:戳我前往 戳我前往 很简单的字符串问题- a# t. P# N# _& _
31.竖直打印单词 Leetcode题1324:戳我前往 戳我前往 简单但值得思考- [: A* i) B {( i6 b& b
32.不含 AAA 或 BBB 的字符串 Leetcode题984:戳我前往 戳我前往 巧妙构造出字符串' |% @0 S* ^6 y' J% @
33.实现Trie(前缀树) Leetcode题208:戳我前往 戳我前往 字符串中经典的算法
, [, o( x; u. o# }. w+ c+ l) a2 I9 G34.最长快乐前缀 Leetcode题1392:戳我前往 戳我前往 如何处理字符串的前后缀
) A5 Z- T) [: D: {% _6 X35.单词搜索II Leetcode题212:戳我前往 戳我前往 前缀树的应用8 r# M# k. i% p# B
36.单词的压缩编码 Leetcode题820:戳我前往 戳我前往 前缀树灵活运用- z! o- b: T5 |# G
37.判定字符是否唯一 《程序员面试金典》01.02 戳我前往 简单但值得思考1 E* ]& s# [- [6 g
38.判定是否互为字符重排 《程序员面试金典》 01.02 戳我前往 简单的面试题$ B/ e; `5 ?" @; N& H
39.无重复字符的最长子串 Leetcode题3:戳我前往 戳我前往 字符串中的滑动窗口: s% c; M7 m% R P- G
40.字符串转换整数 Leetcode题8:戳我前往 戳我前往 需要考虑的细节很多
" \! }7 z1 O5 [) l9 F- e& Z41.翻转字符串里的单词 Leetcode题151:戳我前往 戳我前往 正则匹配! X. G# j' X# P" V; a* r2 V
42.整数转换英文表示 Leetcode题273:戳我前往 戳我前往 非常实用的算法题0 R$ d" E: O3 ? k( @& r
43.统计重复个数 Leetcode题466:戳我前往 戳我前往 循环结剪枝
$ e$ g0 B1 i5 F. _44.超级回文数 Leetcode题906:戳我前往 戳我前往 字符串与大数的处理思路! _. [) f+ \9 L; b5 e
45.单词子集 Leetcode题96:戳我前往 戳我前往 特征思想的应用
' q: e( @% l Y6 t: O分类四:容器类(哈希表,栈,队列,Map,Set)
/ }, k2 n1 _+ y) R% a$ T2 o c+ I容器类的算法题一般需要根据一些容器的特点来解决响应的问题,还有需要选择合适的容器进行新的数据结构的设计,掌握它们的使用,非常重要。
: m5 K( t% S1 p, F. W4 l2 ^2 y# C1 t& n; v4 p+ O, H) C+ P6 c4 c
4 F' I, w L( Z6 o
题目名称 来源 个人题解 备注
( l( S# L m! e( D5 [: Q+ z! s5 F46.按位与为零的三元组 Leetcode题82:戳我前往 戳我前往 哈希表优化
$ ~/ W) R. Y5 x( ~47.设计地铁系统 Leetcode题1396:戳我前往 戳我前往 合理选择容器
/ \& q8 Q( h3 X' g, Z+ L48.LFU缓存 《程序员面试金典》 戳我前往 选择容器来设计
# F. T' ^; @7 d/ M% e9 D; N' b+ a1 Z49.设计推特 Leetcode题355:戳我前往 戳我前往 很实用的算法
7 e" s8 N, |) j# W, q50.最小栈 Leetcode题155:戳我前往 戳我前往 两栈设计最小栈
% i% t6 |2 r/ @ Y, L51.子数组的最小值之和 Leetcode题907:戳我前往 戳我前往 单调栈的应用9 C- J9 G. C" e: E& X
52.栈的压入、弹出序列 《剑指offer》 戳我前往 栈的合法序列2 L+ Q$ @# v& u9 |
53.有效括号的嵌套深度 Leetcode题1111:戳我前往 戳我前往 模仿栈, ?: _' j8 K4 ]
54.逆波兰算法 经典算法 戳我前往 后缀表达式关键算法. S- ]# R1 R2 y1 A) u& o% n/ P' e
分类五:数学思维类(含位运算思想)
7 ~8 X, F* @- u+ T8 P数学思维类的题由于需要很强大的数学思维,但是这又不是一天可以练成的,所以,也常常在面试中会被问到,只有慢慢的积累,才是王道。' S/ E, q/ I& c6 z( h4 _, H- X# B
) F3 @% f% \5 a8 ?
3 w1 t, O; V2 t, J! ], z S题目名称 来源 个人题解 备注! Y- A6 s: D. s+ z8 i+ E
55.水壶问题 Leetcode题365:戳我前往 戳我前往 经典数学问题
% l9 B8 J* B4 e- G* h56.三维形体的表面积 Leetcode题892:戳我前往 戳我前往 空间思想解决算法问题. g1 O6 h# \- A2 c! G) x* A
57.生命游戏 Leetcode题289:戳我前往 戳我前往 数学思维的运用& {; ]" X2 u9 i8 `4 }. {
58.交点 《程序员面试金典》16.03 戳我前往 二维平面的交点问题+ l/ f! T. g7 `2 O4 a$ @" w
59.使数组唯一的最小增量 Leetcode题945:戳我前往 戳我前往 数学思维的运用
/ P9 m( }. w7 q& ^& u60.数值的整数次方 《剑指offer》题16 戳我前往 非常容易出错的面试题" t) H$ |: ?7 S
61.求 1+2+…+n 《剑指offer》 戳我前往 短路原则5 B% A! E) v/ g4 `, t
62.1~n整数中1出现的次数 《剑指offer》 戳我前往 数学思维找规律. u' W5 s, j l- r: W
63.数组中数字出现的次数 《剑指offer》 戳我前往 分组异或7 e% \1 l. z0 K# ~( k' m
分类六:链表
) L3 }8 S- ~# g: b( h1 a/ f, [链表是一种非常常见的数据结构,不管在实际应用还是算法竞赛中,都经常出现,掌握对它们的基本处理,非常重要。" a7 X3 H3 L( O7 b. X: s. C
4 `/ E2 I# L+ ?! E5 G& W
9 H+ l( u% J5 @$ d题目名称 来源 个人题解 备注+ c" t$ ~! |* b6 ]# v
64.两数相加 Leetcode题2:戳我前往 戳我前往 链表的加法问题2 P/ s9 V8 E$ n! v& F3 `3 Z
65.链表的中间结点 Leetcode题876:戳我前往 戳我前往 快慢指针思想/ x) L1 b8 U# b* B% y( {; }
66.删除链表的倒数第N个节点 Leetcode题19:戳我前往 戳我前往 哑节点和双指针
( N. z# o2 ]& @: {" {$ D0 L67.合并两个有序链表 Leetcode题21:戳我前往 戳我前往 链表的递归处理$ K y/ ]3 B' {8 I% Y
68.合并K个排序链表 Leetcode题23:戳我前往 戳我前往 优先队列的使用( ^! p$ U8 J& M$ w/ L3 |
69.删除排序链表中的重复元素 II Leetcode题82:戳我前往 戳我前往 链表基础指针操作
3 f6 a5 s/ h% S2 M70.分隔链表 Leetcode题86:戳我前往 戳我前往 双指针操作
# s; G6 R F \6 C m/ I" G71.旋转链表 Leetcode题61:戳我前往 戳我前往 巧转循环链表
* _+ w- V3 M4 l: v4 c72.两两交换链表中的节点 Leetcode题24:戳我前往 戳我前往 递归解决
: Z% J9 E0 l: r) y# v3 r R73.反转链表 Leetcode题206:戳我前往 戳我前往 多种思路反转链表
' i- F" U& {# d" ?; S74.K 个一组翻转链表 Leetcode题25:戳我前往 戳我前往 分组逆转
3 w7 f+ N5 [2 f1 q; w& c75.判断链表是否有环 《剑指offer》 戳我前往 多种思路判断链表是否有环/ v9 I6 `% `- j: e; x
76.单链表的插入排序 Leetcode题147:戳我前往 戳我前往 链表的插入排序% f3 V2 I" K4 M+ N% J
77.两数相加 II Leetcode题445:戳我前往 戳我前往 用栈翻转链表元素
4 h. w7 p9 [! C: H# O* f分类七:树
% C" O8 q% g. }) o& p5 U树也是一种非常重要的数据结构,因为很多容器的底层都设计到树,所以树也成了面试常问的重点了,你需要对他们的一些基本算法题,非常熟练。 d: Z8 s- H- z, K. R& C7 s
: T5 Y- n) K2 U& f+ H; G! j" p* u( s- b& T
题目名称 来源 个人题解 备注
6 w& ~1 E. k, b- N: ?9 O/ C78.删除给定值的叶子结点 Leetcode题1325:戳我前往 戳我前往 树的简单删除问题9 z6 j1 z2 N$ _3 D4 X t9 e& U
79.二叉树的最大最小深度 Leetcode题104:戳我前往 戳我前往 二叉树的深度问题
4 v/ j, V8 L2 c+ m1 Q- ~& W80.将有序数组转换为二叉搜索树 Leetcode题108:戳我前往 戳我前往 数组和二叉树的转换
; V% r4 u* z! O9 T% ^8 s! \& E81.二叉树的右视图 Leetcode题199:戳我前往 戳我前往 二叉树的视图转换0 L3 H! g5 p; v9 ]/ \
82.另一个树的子树 Leetcode题572:戳我前往 戳我前往 两树关系的判断, p! n2 f9 p& U3 L; G
83.二叉树的最近公共祖先 《剑指offer》 戳我前往 公共祖先问题
0 N* E; r1 y6 a% N84.二叉树的层序遍历序列存储 Leetcode题102:戳我前往 戳我前往 二叉树遍历序列的存储5 C. t' g# s! ]* C0 f- H2 \4 B0 f! M; b
85.验证二叉搜索树 Leetcode题98:戳我前往 戳我前往 二叉搜索树的验证
! \+ D7 ?% Q$ W' |* d# A. b& p分类八:数组(贪心,二分)
+ C3 F, G" R% U4 A( {( r数组类的算法题也是,说难不难,说简单不简单,而且数组是平时编码用的最多的结构了,所以,需要对它的一些基本算法引起重视。% j. ^8 {: U3 W) H. l' U
, w9 m8 [0 Q, n, Z! p, f& a5 \( \ G
题目名称 来源 个人题解 备注) h; G, L3 F! O6 o: W
86.两个数组间的距离值 Leetcode题1385:戳我前往 戳我前往 二分法应用. w3 G3 h2 j. Z9 ?3 q
87.旋转矩阵 《程序员面试金典》 戳我前往 原地修改
% [/ x; [! {% y" l0 F88.合并区间 Leetcode题56:戳我前往 戳我前往 排序处理数组问题
3 U. E. f1 w$ _8 F89.跳跃游戏 Leetcode题55:戳我前往 戳我前往 贪心思想运用
3 ]! V' ]0 U# R+ `7 q90.盛最多水的容器 Leetcode题11:戳我前往 戳我前往 双指针; E6 l, B# C. g
91.统计「优美子数组」 Leetcode题1248:戳我前往 戳我前往 滑动窗口- T$ z% g6 V1 s1 u+ n0 x( A
92.搜索旋转排序数组 Leetcode题33:戳我前往 戳我前往 二分搜索
0 ?3 h& h0 i' J, j2 M3 X' H93.山脉数组中查找目标值 Leetcode题1095:戳我前往 戳我前往 二分搜索2 b) H# r/ z4 S3 D% s
94.快乐数 Leetcode题202:戳我前往 戳我前往 快慢指针判断成环思路
2 u$ R, i: F$ B/ e/ c95.跳跃游戏 II Leetcode题45:戳我前往 戳我前往 贪心思想, u( R0 v# G$ \
96.x 的平方根 Leetcode题69:戳我前往 戳我前往 二分法取平方根4 q6 K! J: i6 c
97.数组中的逆序对 《剑指offer》题51 戳我前往 归并中的计数(分治)
5 ?0 P) T& c- {; x0 Y* L" e98.课程表 II Leetcode题210:戳我前往 戳我前往 数组中的拓扑排序
. K6 i1 o5 t8 D5 q) t分类九:经典算法列举
4 X' {7 q4 [9 e- K9 O# g最后两个,凑个整,刚好100,是一些比较经典的算法列举。8 {* `* ^3 s9 f- W8 o9 E
: ^$ m) j" i8 J( K: z# _
# s' u/ e0 ^) U/ {. H& G6 J题目名称 来源 个人题解 备注. {+ v8 L5 f) R* X: J; S' P, T
99.普利姆算法 经典算法 戳我前往 最小生成树经典算法
% ?# t n1 w8 a$ ^ R100.约瑟夫环 经典算法 戳我前往 很经典的动态问题
& m2 a. Y5 D, ?8 D2 u) w0x04.End
1 [; m; u d# R. R. i6 F希望这100个算法题能对正在看的你有所帮助!! k" O6 C# |) t$ v
后续还会继续更新更多的内容。0 |& |% M, u3 i) }. v) |7 c
您的支持,是我分享的不竭动力!
2 } ~2 r' R# x7 o: H. e6 L! S' Y: h
" O* }8 J9 g* X ~: p, [* E– ATFWUS 2020-05-18: T2 {8 a" @0 d3 i4 M( Q( q
————————————————
0 ? v" U' t; a9 ~版权声明:本文为CSDN博主「ATFWUS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。1 `0 N% f4 n1 ~" y$ t. Z( A
原文链接:https://blog.csdn.net/ATFWUS/article/details/106193067* ]3 F% r1 y2 D& x9 {, B
. g/ X. Q" y4 E1 [) m
- k/ C5 X& O3 q- K0 T O2 \
|
zan
|