- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563258 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174200
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
/ c( C( l5 j: h
2020最新-精选基础算法100题(面试必备)( R2 s& Q6 h5 w) O- q( G1 ?
) B* u0 Q% [5 ~5 K8 P: a. W5 ?$ L
0x01.概述
) w& X; Y3 `5 I7 o1 y" |; G作为一个程序员,算法能力必不可少,虽然不一定是算法工程师,但是算法还是彰显着个人的编码能力,面试中也经常会被问到,甚至会被要求临场做算法题,所以,还是好好积累吧。5 k+ U" T2 S' W: p* y/ K
6 o9 ?" y+ u1 ~8 _% G+ M
" w: J' S# `( O% G+ ?4 W个人其实对算法挺有兴趣的,从3月份开始,陆陆续续刷了一些算法题,把一些有意义的记录下来了,也顺便写了一些题解,个人认为,还是挺有收获的。: ]2 O4 Q7 X' I5 E, _: f, x- w
之前写了一篇算法文章的目录,不过后来就忘了实时去更新了,于是现在,想把之前做过的一些有意义的算法题分享出来,刚好整理了100篇比较有意义的。希望对大家有所帮助。- L2 J9 d" n# v' B |2 k, y) Y
( E* W4 B* _# w- Z7 y
9 D8 m3 O E$ L! P0 U" e8 q5 g% L4 O
T; i! z4 T0 ~# F1 |5 b0x02.说明- P9 C1 y/ X, a
关于语言的选择:
- b9 l/ K* ?( ^- @( ^
8 t% O5 U+ b; `/ K1 G; U
% P5 \. G' j _. a- U- M' `前半段主要用C++写的,后半段主要用Java写的。, ^& O8 C9 x+ H4 V
其实什么语言没有太大区别,主要是思想,用着顺手就行。! @: C! F& N$ x6 B/ x$ B1 \# ^
这里安利一波Java,哈哈,Java写算法题写多了,真的比较舒适。
% O. u3 f- m2 F) L9 Y% }关于文章类型的选择:
9 {6 G9 X% }! F( y2 l3 Z9 B' I# @6 W& l9 C0 t
9 \; Q8 L( D/ G. w选取了一些较为基本的算法类型,都是比较常见的。/ W6 M( y0 _$ @0 F; ]. f: `" j' D
不涉及ACM等难度太高的题,大佬们移步哈。
% v2 E+ |2 Y' l% H都是一些比较经典的问题。 s" W8 g3 h2 U: _9 M" D* G
关于题目的来源:
# A8 S8 M" t- [
& L9 [% T8 \: M3 G: r0 M: g* K5 c/ _
平时主要刷题的平台是Leetcode,因为是函数式的,比较方便。7 b& a& h: ?0 y& N
还有一些是在《剑指offer》,《程序员面试金典》中看到比较好的,所有题目后面都给出了出处。% F( P, w4 E2 N9 ~
关于题解的说明:3 U9 l9 \/ t. N' p% F
$ L9 t0 S f( o9 J* |& I+ X. l" F, J2 M' U# s
题解是我自己所写,有时候也参考了一些官方题解的思想,可能更好理解。7 U; F* J0 A, t/ v$ o. k
题解的代码都提交测试过的,保证暂时没有问题。' D' a5 D% S& _! L6 p- ~, @
个人水平有限,可能文章里面存在一些问题,还望大佬多多指点。
: L" J0 P( b2 t每个题目附带了原文链接,不喜欢阅读我题解的小伙伴们也可以直接移步原出处哈。
; R% J1 W! f( x2 G+ {+ s1 }$ J关于算法能力提升的一些意见:
# x3 r3 L4 L% N. ^5 Z% }8 ?" q/ X5 @3 k) d, C
% M+ K% ?. T X! O, N% m个人认为,算法来说,思想最为重要,有算法的严谨思想,才是算法能力提升的基础。3 H% O- P; n. ?4 d- j
刷题就是培养算法思想的一种实际行动。 {7 ~( J% x: a; J) O
好好理解透一个问题,或者一类问题,远胜于你麻木的刷大量的题。3 l1 W5 P2 j$ O9 ^- O
算法确实也有模板题,只需要照着模板就能做出,但问题是,照着模板就一定能做出来嘛,是否真正理解了为什么这个模板可以通用。3 _- v; o- y5 B
关于分类:% b' v6 {4 V: }+ }
. s4 n" q6 i+ [
{$ l8 q7 T# K# x有些分类确实不太好分,所以就单独列出来了。4 o4 m x$ s9 l9 I- i
主要的还是区分开来了。/ W& W5 t; W6 I- a3 V$ T: H
0x03.正文–精选算法100题(附个人题解)
& f) c$ s# S: |0 E' O分类一:动态规划(dp)' i) c/ ~6 j- g
没错,就是你熟悉的dp,dp说简单也简单,说难也实在是太难了,重点是如何找到里面的状态转移方程。经过这些题目的训练,希望你能有一些初步的dp思路了。
( O# J" [; M" I% D3 X' [9 N
4 V. k% s. c3 k9 V/ N5 o/ Y% d, C% ^* J- ~( P& K- d" W7 m& ?
题目名称 来源 个人题解 备注
+ P1 z! k! d; X$ n: k01.打家劫舍 Leetcode题198:戳我前往 戳我前往 估计是最好的dp入门题型了; ~1 l7 E/ E- I; b1 V A
02.斐波拉契数列 经典问题 戳我前往 确实比较经典哦~1 u6 B& Q3 |) O0 L; m$ @
03.零钱兑换问题 Leetcode题322:戳我前往 戳我前往 也是一个比较经典的问题了
( h2 R4 w3 t9 _* F04.零钱兑换II Leetcode题518:戳我前往 戳我前往 零钱问题通用解法
4 Y+ N2 e0 c+ d( h1 q' O05.最长上升子序列 Leetcode题300:戳我前往 戳我前往 堪称数组dp中的典范. h) k5 b) a% M, D5 S( P0 K! D
06.牌型种数 蓝桥杯:链接暂无 戳我前往 二维动态规划,要仔细想想
& _7 m; z6 @* W( }07.最低票价 Leetcode题983:戳我前往 戳我前往 如何状态转移?
2 s. E' R- H1 A3 w! ^* _, h/ Z08.不同的二叉搜索树 Leetcode题152:戳我前往 戳我前往 你会发现dp的神奇之处
! e0 \$ L2 @& [0 g09.礼物的最大价值 《剑指offer》题47 戳我前往 优化dp的思路
. |, z4 ?% `8 ?; J. G! w10.接雨水 Leetcode题42:戳我前往 戳我前往 需要仔细思考以发现dp6 l6 w% v& ?0 H6 n' A
11.编辑距离 Leetcode题72:戳我前往 戳我前往 最为经典的二维dp题型$ t) z. L% N: y' E/ F' F+ e. [
12.买卖股票的最佳时机(6题) Leetcode6题:戳我前往 戳我前往 统一化的dp思维,棒
3 p+ i+ k$ }" v/ Y6 {. O2 Q+ B0 P13.鸡蛋掉落 Leetcode题887:戳我前往 戳我前往 有些难度哦~
0 C* Z; `4 ?" \# r! l14.最大正方形 Leetcode题221:戳我前往 戳我前往 矩阵中的dp思路' o. X4 @" F# x e) k
15.和为K的子数组 Leetcode题560:戳我前往 戳我前往 前缀和也是dp的思路$ F1 \1 B6 d( d8 l! q$ v; @
分类二:搜索类(DFS,BFS,回溯,暴力搜索)& h; g8 s- N# P& y R1 k6 u
搜索类的算法题应该是随便哪个算法比赛都可以看到,虽然经典,但在这上面还是会有比较难的问题,所以,掌握基本思路和套路就显得格外重要。! Y( J3 V4 m- J" b X+ z
B+ W. W) r5 E: Y
- Y+ d5 f- c O; W ]) m7 y题目名称 来源 个人题解 备注- Q- J9 N9 n" j- E
16.图的深搜和广搜 经典问题 戳我前往 搜索中的经典问题
8 E7 @5 N# R) @( Z' B# H" @! R8 t# F* T17.方格填数 蓝桥杯:链接暂无 戳我前往 揣摩一下DFS的思路 G- C6 j `, H4 J- T
18.路径之谜 蓝桥杯:链接暂无 戳我前往 经典改编迷宫问题
% f: {" d2 ?+ u8 {; @1 h$ w19.岛屿的最大面积 Leetcode题695:戳我前往 戳我前往 最常见的矩阵中的DFS a' b( [$ X! e2 N
20.逃离大迷宫 Leetcode题1036:戳我前往 戳我前往 各种搜索思想都可以应用8 Q; d5 z& r1 z% c
21.单词搜索 Leetcode题79:戳我前往 戳我前往 字符串中的搜索8 Q2 O! u) P" W+ d
22.检查网格中是否存在有效路径 Leetcode题1391:戳我前往 戳我前往 思考另类的搜索
3 y7 U' v3 b" m23.地图分析 Leetcode题1162:戳我前往 戳我前往 多源BFS1 M) N/ c# j1 H; q, J$ x: ]1 F
24.机器人的运动范围 《剑指offer》13题 戳我前往 DFS进行计数的基本思路
|9 H6 s" \+ g& n2 f9 m25.括号生成 Leetcode题22:戳我前往 戳我前往 用DFS生产括号
) @! g1 _, F% q/ K" a26.01 矩阵 Leetcode题542:戳我前往 戳我前往 矩阵中的搜索
' _" M& l* z+ w/ o2 E9 M/ [! ]27.岛屿数量 Leetcode题200:戳我前往 戳我前往 根据需求使用DFS# ~* ]# T6 k# \
28.全排列问题 Leetcode题46:戳我前往 戳我前往 最经典的回溯算法
. w5 i( t9 n9 ^分类三:字符串
7 f' M/ p8 {3 e& q' f9 B5 A别忽视字符串的算法问题,它难起来可以非常难,简单的也很简单,面试喜欢提问,而且特别容易出错,需要引起重视。& T- X J v9 Z* @* Y
! Z4 D, M4 X3 R+ l& j* i: W
0 Z4 [. u' w1 Z+ |$ V! g: ?: i2 K
题目名称 来源 个人题解 备注
8 N- P6 C8 [1 H4 C29.KMP算法 经典算法 戳我前往 经典字符串匹配算法) f7 j! \. Z5 \5 e: r7 _
30.拼写单词 Leetcode题1160:戳我前往 戳我前往 很简单的字符串问题8 r4 g( D i! d
31.竖直打印单词 Leetcode题1324:戳我前往 戳我前往 简单但值得思考
& w9 x) u' S0 G' ]0 a# J5 i* I, H4 H32.不含 AAA 或 BBB 的字符串 Leetcode题984:戳我前往 戳我前往 巧妙构造出字符串
7 Z( w. \' w- l. v8 c8 w33.实现Trie(前缀树) Leetcode题208:戳我前往 戳我前往 字符串中经典的算法6 G9 y) a; p$ L0 f
34.最长快乐前缀 Leetcode题1392:戳我前往 戳我前往 如何处理字符串的前后缀
9 z1 G2 T+ V- m; e. T: X35.单词搜索II Leetcode题212:戳我前往 戳我前往 前缀树的应用: M( @" x* b/ n' W' X
36.单词的压缩编码 Leetcode题820:戳我前往 戳我前往 前缀树灵活运用
7 I7 M/ D' A, L. l37.判定字符是否唯一 《程序员面试金典》01.02 戳我前往 简单但值得思考. w4 @% w9 f: E3 [9 t% u( F
38.判定是否互为字符重排 《程序员面试金典》 01.02 戳我前往 简单的面试题: W% _8 O2 u( G" a$ P
39.无重复字符的最长子串 Leetcode题3:戳我前往 戳我前往 字符串中的滑动窗口
O; m M/ o. x. }; s4 m6 N! B40.字符串转换整数 Leetcode题8:戳我前往 戳我前往 需要考虑的细节很多
0 q3 `0 V! ]5 j& p4 ~41.翻转字符串里的单词 Leetcode题151:戳我前往 戳我前往 正则匹配
/ Y b" y& W! D6 V3 j/ ^42.整数转换英文表示 Leetcode题273:戳我前往 戳我前往 非常实用的算法题6 Z8 `& f+ ]+ x' ~3 z" z
43.统计重复个数 Leetcode题466:戳我前往 戳我前往 循环结剪枝
6 d0 A( h8 y' A9 A [. W44.超级回文数 Leetcode题906:戳我前往 戳我前往 字符串与大数的处理思路
9 H2 E2 ]* v4 \2 H$ j45.单词子集 Leetcode题96:戳我前往 戳我前往 特征思想的应用
: {: j/ q* f! u- d9 B分类四:容器类(哈希表,栈,队列,Map,Set), z$ x* ]2 G* g, B0 J* G
容器类的算法题一般需要根据一些容器的特点来解决响应的问题,还有需要选择合适的容器进行新的数据结构的设计,掌握它们的使用,非常重要。. |! T; ]# q0 ^. _& s5 n1 G, B
+ Y/ U" r, |/ B4 A( c, g2 H+ Z0 [& z8 S' S. n% _
题目名称 来源 个人题解 备注
Q( y7 ?; R L6 L) `9 M1 H1 x46.按位与为零的三元组 Leetcode题82:戳我前往 戳我前往 哈希表优化
( P/ ~4 o+ ~. X0 \2 |4 m5 G. j" F1 T47.设计地铁系统 Leetcode题1396:戳我前往 戳我前往 合理选择容器
. P$ A- @& u! m* [2 U" J T: f48.LFU缓存 《程序员面试金典》 戳我前往 选择容器来设计
$ B* Y5 G8 k* D3 \" l) f49.设计推特 Leetcode题355:戳我前往 戳我前往 很实用的算法
$ G# I. h& u) h- I50.最小栈 Leetcode题155:戳我前往 戳我前往 两栈设计最小栈! S' a. f. ^3 W/ J" ~) M/ f
51.子数组的最小值之和 Leetcode题907:戳我前往 戳我前往 单调栈的应用8 U, d+ x/ U3 Q; \
52.栈的压入、弹出序列 《剑指offer》 戳我前往 栈的合法序列
+ f' S. p; i" Y- K2 E53.有效括号的嵌套深度 Leetcode题1111:戳我前往 戳我前往 模仿栈
}8 K. Q$ \0 W/ V2 \54.逆波兰算法 经典算法 戳我前往 后缀表达式关键算法# y; B0 L5 r5 w$ T! P
分类五:数学思维类(含位运算思想)
3 f7 I; k( w. r; c数学思维类的题由于需要很强大的数学思维,但是这又不是一天可以练成的,所以,也常常在面试中会被问到,只有慢慢的积累,才是王道。2 m1 G0 M. H5 M. K& ?
) f/ p7 L" R1 H: P8 V" ?' f. {0 O0 I% K" o: Y" W. H- t
题目名称 来源 个人题解 备注
8 [: k" J2 G1 J `) P. v: W55.水壶问题 Leetcode题365:戳我前往 戳我前往 经典数学问题
7 J( K% y' {+ ]9 f7 E( t: R+ I. t. ]56.三维形体的表面积 Leetcode题892:戳我前往 戳我前往 空间思想解决算法问题
: Y$ k( Z1 W7 p5 G57.生命游戏 Leetcode题289:戳我前往 戳我前往 数学思维的运用
4 N0 D8 y8 h2 _; e# ~2 V- p58.交点 《程序员面试金典》16.03 戳我前往 二维平面的交点问题& s1 s3 H R. M
59.使数组唯一的最小增量 Leetcode题945:戳我前往 戳我前往 数学思维的运用( p# J! N3 N5 o8 J% |+ g. a
60.数值的整数次方 《剑指offer》题16 戳我前往 非常容易出错的面试题
+ r; |& K2 p1 a) {6 t! N+ c8 P a61.求 1+2+…+n 《剑指offer》 戳我前往 短路原则. |1 r9 ^) i# F# x
62.1~n整数中1出现的次数 《剑指offer》 戳我前往 数学思维找规律5 ?# @: S q7 l8 z6 e# U# n; V
63.数组中数字出现的次数 《剑指offer》 戳我前往 分组异或( \& @" [5 t- I; q+ ^+ Z8 L# @
分类六:链表8 M$ x" [; s% m9 e$ W, g1 k
链表是一种非常常见的数据结构,不管在实际应用还是算法竞赛中,都经常出现,掌握对它们的基本处理,非常重要。3 n- u+ @, ~; q# w
8 l& b9 O. G& R
0 e* i& I. @% P2 u! B) }题目名称 来源 个人题解 备注
; y0 q% z8 M6 e3 j* l64.两数相加 Leetcode题2:戳我前往 戳我前往 链表的加法问题
2 u7 t$ _! n/ A4 _! r8 ~65.链表的中间结点 Leetcode题876:戳我前往 戳我前往 快慢指针思想
# @# k9 Z9 z6 m0 k. C+ B7 k) N, z66.删除链表的倒数第N个节点 Leetcode题19:戳我前往 戳我前往 哑节点和双指针, i6 Q0 C6 ~3 t4 p& x$ |: p
67.合并两个有序链表 Leetcode题21:戳我前往 戳我前往 链表的递归处理
2 P1 ]( x3 s* T68.合并K个排序链表 Leetcode题23:戳我前往 戳我前往 优先队列的使用% P6 L; Z) i2 Q# T8 z# n
69.删除排序链表中的重复元素 II Leetcode题82:戳我前往 戳我前往 链表基础指针操作! m) v, n. ~3 [2 ]. {% }& p
70.分隔链表 Leetcode题86:戳我前往 戳我前往 双指针操作' ]% j0 c7 K9 F7 `5 d" {
71.旋转链表 Leetcode题61:戳我前往 戳我前往 巧转循环链表
/ E I% ?) S7 C+ E$ ~0 }' L72.两两交换链表中的节点 Leetcode题24:戳我前往 戳我前往 递归解决6 V: G) W f3 a6 X! m! y
73.反转链表 Leetcode题206:戳我前往 戳我前往 多种思路反转链表! y! Z$ S$ M& y9 V) u7 |& D
74.K 个一组翻转链表 Leetcode题25:戳我前往 戳我前往 分组逆转: `; V9 c& R+ e6 O
75.判断链表是否有环 《剑指offer》 戳我前往 多种思路判断链表是否有环 e: J: ]+ w( S( K$ L" J; S1 p
76.单链表的插入排序 Leetcode题147:戳我前往 戳我前往 链表的插入排序
5 L: L9 ^. Q, N% A77.两数相加 II Leetcode题445:戳我前往 戳我前往 用栈翻转链表元素
1 u5 ^3 v& b2 n a$ D' }( u分类七:树# ?1 K7 S# m! X( o% g
树也是一种非常重要的数据结构,因为很多容器的底层都设计到树,所以树也成了面试常问的重点了,你需要对他们的一些基本算法题,非常熟练。
A2 e% p8 H; ~. V2 Q; R3 d
! G: \- \8 A1 {8 z4 X& g4 U1 d/ S4 N% P- `) M, ?: W& {6 U5 e
题目名称 来源 个人题解 备注; G) K4 o! p, I/ S5 _$ F% D
78.删除给定值的叶子结点 Leetcode题1325:戳我前往 戳我前往 树的简单删除问题
9 u( V! ?% z. p+ k! x79.二叉树的最大最小深度 Leetcode题104:戳我前往 戳我前往 二叉树的深度问题
% p4 ?1 c, D* ~" `4 g; N+ o3 A80.将有序数组转换为二叉搜索树 Leetcode题108:戳我前往 戳我前往 数组和二叉树的转换
+ e- G: p3 Y. _( o8 t- ?9 t. r81.二叉树的右视图 Leetcode题199:戳我前往 戳我前往 二叉树的视图转换
0 P6 ^+ U1 I& o# V5 O) G* l82.另一个树的子树 Leetcode题572:戳我前往 戳我前往 两树关系的判断% F, i+ f. e6 _9 ]0 T2 }
83.二叉树的最近公共祖先 《剑指offer》 戳我前往 公共祖先问题% f' \) k* v4 }, F0 _
84.二叉树的层序遍历序列存储 Leetcode题102:戳我前往 戳我前往 二叉树遍历序列的存储: C \9 i3 ?; E
85.验证二叉搜索树 Leetcode题98:戳我前往 戳我前往 二叉搜索树的验证
' t9 Y+ y/ q+ `1 t2 [3 b2 J分类八:数组(贪心,二分)1 R3 w' X+ W% W1 u7 S! H
数组类的算法题也是,说难不难,说简单不简单,而且数组是平时编码用的最多的结构了,所以,需要对它的一些基本算法引起重视。
( u3 d5 y! `' @% W6 r w& T% @( I) C6 t
. Z! l% b% T7 ^# Y" q9 K
题目名称 来源 个人题解 备注
( }1 s. d( E% h0 F5 o: ^: ~/ K86.两个数组间的距离值 Leetcode题1385:戳我前往 戳我前往 二分法应用
( x) H9 O) P* c% ^9 ^87.旋转矩阵 《程序员面试金典》 戳我前往 原地修改
3 f8 @& j) \8 r) J; Q$ m( `88.合并区间 Leetcode题56:戳我前往 戳我前往 排序处理数组问题
5 M4 T8 X- z% W( _9 \3 b89.跳跃游戏 Leetcode题55:戳我前往 戳我前往 贪心思想运用
H4 I# L4 c C2 V& y% S2 L90.盛最多水的容器 Leetcode题11:戳我前往 戳我前往 双指针2 s* U- {/ ` @% U( ]
91.统计「优美子数组」 Leetcode题1248:戳我前往 戳我前往 滑动窗口
, i* o, P% \% M' U+ `92.搜索旋转排序数组 Leetcode题33:戳我前往 戳我前往 二分搜索' ^+ C) S' R. f4 ?4 F' Q' u
93.山脉数组中查找目标值 Leetcode题1095:戳我前往 戳我前往 二分搜索
( b, u7 `& `& [' q5 G94.快乐数 Leetcode题202:戳我前往 戳我前往 快慢指针判断成环思路* L, P9 }; K4 p
95.跳跃游戏 II Leetcode题45:戳我前往 戳我前往 贪心思想
3 L+ `- ?$ r7 R96.x 的平方根 Leetcode题69:戳我前往 戳我前往 二分法取平方根/ T& R3 U5 u. x- j. c
97.数组中的逆序对 《剑指offer》题51 戳我前往 归并中的计数(分治)
4 I" i0 n+ F3 r1 Z2 a" c98.课程表 II Leetcode题210:戳我前往 戳我前往 数组中的拓扑排序
8 H, i% t F1 F) r; ?7 f# W分类九:经典算法列举
& Q. `& V. O" I- s% m最后两个,凑个整,刚好100,是一些比较经典的算法列举。0 K+ n4 ~6 R5 F1 G
7 `9 i$ @, Y, ^- C) h; y
) M' K/ p, T% Q; B, g题目名称 来源 个人题解 备注( ^3 V4 b. @( v! R' u9 e
99.普利姆算法 经典算法 戳我前往 最小生成树经典算法
$ Q# Q0 ^) Q# z) Y3 H4 |100.约瑟夫环 经典算法 戳我前往 很经典的动态问题
0 y5 G8 J4 P' t5 M- ?' C0x04.End
1 s+ W' y# g8 _( l5 o) n4 U希望这100个算法题能对正在看的你有所帮助!: ~+ G; t1 ~" H' T- W
后续还会继续更新更多的内容。% C6 P: R% w2 M e+ K$ x; h, `
您的支持,是我分享的不竭动力!9 g1 c; z: q+ r8 |3 Z; T
' j: e. l, e. G6 q$ I8 x8 W
% ^7 Z5 a& N1 b( x2 T4 w
– ATFWUS 2020-05-18
" \; B* {$ k8 y7 n2 @————————————————) O8 r9 t4 h$ D- Z
版权声明:本文为CSDN博主「ATFWUS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。6 G. H) L7 J! U, R% U
原文链接:https://blog.csdn.net/ATFWUS/article/details/106193067
0 u6 f( c5 }) x. K1 z# E& P2 t6 B0 j
9 D8 y' _5 `5 S9 n" j: N |
zan
|