- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 558769 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 173004
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 18
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
) c4 D3 x3 O' ~* p$ t9 |) X2020最新-精选基础算法100题(面试必备)
' w: p7 N. [8 `4 @) S; `$ Q8 k/ c1 p8 [0 \
0x01.概述8 ~3 l# @) a& k) a+ ^/ d. Y' O/ e
作为一个程序员,算法能力必不可少,虽然不一定是算法工程师,但是算法还是彰显着个人的编码能力,面试中也经常会被问到,甚至会被要求临场做算法题,所以,还是好好积累吧。
1 i$ E2 H E4 i* y
3 r( F0 H6 x2 T: p
' d5 c( f& K7 h个人其实对算法挺有兴趣的,从3月份开始,陆陆续续刷了一些算法题,把一些有意义的记录下来了,也顺便写了一些题解,个人认为,还是挺有收获的。8 C* X2 n& G8 E- ]
之前写了一篇算法文章的目录,不过后来就忘了实时去更新了,于是现在,想把之前做过的一些有意义的算法题分享出来,刚好整理了100篇比较有意义的。希望对大家有所帮助。
) R7 V2 n4 c9 o- ^+ I/ P" ^. q' r( {* P! U) T9 g
( m) z5 b4 t* { a. J1 A* \
4 P0 R* w" F3 W" i$ a1 G
% n8 e5 }* d5 N9 V0x02.说明; q; m0 x% H# o& G+ @3 D
关于语言的选择:& i$ W) H( x* h$ W' i9 k0 E
. J/ p" h6 w( N1 S/ o' o
: k. ?2 e: ?/ Q9 |) ^4 E9 s0 u, a6 D前半段主要用C++写的,后半段主要用Java写的。8 |; [1 U- j! X( p! B) E
其实什么语言没有太大区别,主要是思想,用着顺手就行。
% |# N, @0 j4 X& T+ V6 O+ a4 f* [+ j这里安利一波Java,哈哈,Java写算法题写多了,真的比较舒适。
' h" c! e# s' G+ [$ w0 R# N8 @关于文章类型的选择:
) S) q/ g. ?# X5 ]
/ B9 b1 q, C' T, J/ ?9 f9 }9 a1 T- }6 g# h; I
选取了一些较为基本的算法类型,都是比较常见的。
1 i# G2 o" \# G$ `' J/ P& |不涉及ACM等难度太高的题,大佬们移步哈。) M# n) o) H$ }, {( H- k
都是一些比较经典的问题。
- q2 i: G2 A/ D0 n3 }# [5 M关于题目的来源:% w& ~4 m* O2 d, ^
: W+ T& [8 f" v
. N/ K3 r" z0 a8 {' m% L平时主要刷题的平台是Leetcode,因为是函数式的,比较方便。
* V) {1 v" t u" T% P% N还有一些是在《剑指offer》,《程序员面试金典》中看到比较好的,所有题目后面都给出了出处。
( r# c$ H* O9 ^+ g3 C关于题解的说明:
, h1 ] u, ?$ w4 Z+ L3 L7 l
4 x; }! k* Z$ X6 D7 C4 ?8 v5 a. {, K6 y4 C+ m
题解是我自己所写,有时候也参考了一些官方题解的思想,可能更好理解。
Q- u$ A" V, K' U$ y! N* d( z1 Y6 s题解的代码都提交测试过的,保证暂时没有问题。
5 G, m6 G- I8 r* b' D# J0 F个人水平有限,可能文章里面存在一些问题,还望大佬多多指点。
$ u `4 D% ^: R2 w& K每个题目附带了原文链接,不喜欢阅读我题解的小伙伴们也可以直接移步原出处哈。# W" h, T' O3 [7 [& V9 B- m
关于算法能力提升的一些意见:
" u) K; l+ L( ~; M- W$ a
4 ?7 \. R- [9 h. E3 b$ u
: Y, V5 s7 q, g) }8 P个人认为,算法来说,思想最为重要,有算法的严谨思想,才是算法能力提升的基础。* F6 m. e5 f2 C" H' {: i" V4 h
刷题就是培养算法思想的一种实际行动。
8 x5 d7 g% t9 u0 ?& l好好理解透一个问题,或者一类问题,远胜于你麻木的刷大量的题。8 m. ~ @8 N4 F4 }+ f/ t
算法确实也有模板题,只需要照着模板就能做出,但问题是,照着模板就一定能做出来嘛,是否真正理解了为什么这个模板可以通用。. s! A( O$ t, [ X* P+ u" x
关于分类:
! I) k& b6 V- T4 V
9 }" ^) N& P, {, L, O% F$ \4 w
4 H+ x% {5 w, m有些分类确实不太好分,所以就单独列出来了。$ L8 p4 C/ |" O6 Q3 y& R" c
主要的还是区分开来了。
0 o8 y2 U. e- h, C0x03.正文–精选算法100题(附个人题解)
6 H2 c2 z& u7 m( z- c1 L1 |! h( K分类一:动态规划(dp)9 o" l8 A4 N! Z! u. s( g
没错,就是你熟悉的dp,dp说简单也简单,说难也实在是太难了,重点是如何找到里面的状态转移方程。经过这些题目的训练,希望你能有一些初步的dp思路了。6 K( B/ [0 V. y, G
5 U# K! ~0 O2 m$ }: o9 l8 L J
( _- X# J/ y* |- S题目名称 来源 个人题解 备注
* P8 R I$ C6 ^, U01.打家劫舍 Leetcode题198:戳我前往 戳我前往 估计是最好的dp入门题型了' D ?: J% F0 ?2 k1 A
02.斐波拉契数列 经典问题 戳我前往 确实比较经典哦~
' q# [4 p; g! f4 }) ]$ i! s03.零钱兑换问题 Leetcode题322:戳我前往 戳我前往 也是一个比较经典的问题了4 a$ s; v: o6 X; j: D
04.零钱兑换II Leetcode题518:戳我前往 戳我前往 零钱问题通用解法
) ^3 a: c6 ~/ i V" b9 D05.最长上升子序列 Leetcode题300:戳我前往 戳我前往 堪称数组dp中的典范
$ ~& F: E& F' W7 E5 v) Y6 _06.牌型种数 蓝桥杯:链接暂无 戳我前往 二维动态规划,要仔细想想5 C+ D6 S" T, P u, H' s
07.最低票价 Leetcode题983:戳我前往 戳我前往 如何状态转移?5 C) D% _9 c& A2 O
08.不同的二叉搜索树 Leetcode题152:戳我前往 戳我前往 你会发现dp的神奇之处
; Q4 y5 c+ D2 D; K' g* S09.礼物的最大价值 《剑指offer》题47 戳我前往 优化dp的思路
% A% Z6 w" ^3 x( ~( k9 U10.接雨水 Leetcode题42:戳我前往 戳我前往 需要仔细思考以发现dp F; R7 K$ D) W3 y3 t4 O, t
11.编辑距离 Leetcode题72:戳我前往 戳我前往 最为经典的二维dp题型' d5 m) N8 b9 L7 w- B
12.买卖股票的最佳时机(6题) Leetcode6题:戳我前往 戳我前往 统一化的dp思维,棒
9 [) U" X) j4 }: y: @13.鸡蛋掉落 Leetcode题887:戳我前往 戳我前往 有些难度哦~
; X" _8 D8 B" s: b14.最大正方形 Leetcode题221:戳我前往 戳我前往 矩阵中的dp思路% E7 N$ y6 g/ _" y1 t
15.和为K的子数组 Leetcode题560:戳我前往 戳我前往 前缀和也是dp的思路/ M6 I" \1 u8 g+ b3 V" y
分类二:搜索类(DFS,BFS,回溯,暴力搜索)
1 O2 a4 t- K4 ~- y. W' k搜索类的算法题应该是随便哪个算法比赛都可以看到,虽然经典,但在这上面还是会有比较难的问题,所以,掌握基本思路和套路就显得格外重要。
3 g& R. i& o$ c# }% E8 d
1 y7 B3 T& m4 l; z
1 n7 s. ~* ~4 E. K题目名称 来源 个人题解 备注
& S* G. j; k3 u* F16.图的深搜和广搜 经典问题 戳我前往 搜索中的经典问题+ v0 x5 q3 A3 l# y# I- P7 X+ t
17.方格填数 蓝桥杯:链接暂无 戳我前往 揣摩一下DFS的思路
- C3 I$ X, h9 k t4 ~: ^; j! ]18.路径之谜 蓝桥杯:链接暂无 戳我前往 经典改编迷宫问题3 y: J1 ~: d; ]
19.岛屿的最大面积 Leetcode题695:戳我前往 戳我前往 最常见的矩阵中的DFS
1 p/ h5 i; [( H) U2 e; C( K$ P20.逃离大迷宫 Leetcode题1036:戳我前往 戳我前往 各种搜索思想都可以应用
4 V6 A& N. Q" L' s3 `21.单词搜索 Leetcode题79:戳我前往 戳我前往 字符串中的搜索
* _( \# n4 ?+ }: D6 m( S! B' g22.检查网格中是否存在有效路径 Leetcode题1391:戳我前往 戳我前往 思考另类的搜索
9 _8 b* b- Q+ {" j0 N23.地图分析 Leetcode题1162:戳我前往 戳我前往 多源BFS8 F* a" Z% H9 J9 d2 S- w
24.机器人的运动范围 《剑指offer》13题 戳我前往 DFS进行计数的基本思路
( b" k2 j- E" w9 A+ g+ g25.括号生成 Leetcode题22:戳我前往 戳我前往 用DFS生产括号" j, u- _$ X; K: l7 V& I! N
26.01 矩阵 Leetcode题542:戳我前往 戳我前往 矩阵中的搜索
9 A) K) N+ h% q- ]27.岛屿数量 Leetcode题200:戳我前往 戳我前往 根据需求使用DFS- z+ P$ R2 k! j- [
28.全排列问题 Leetcode题46:戳我前往 戳我前往 最经典的回溯算法- v+ D0 H+ z3 ]* r3 t
分类三:字符串! f' x1 k) t0 ^' N- D6 m2 Y O
别忽视字符串的算法问题,它难起来可以非常难,简单的也很简单,面试喜欢提问,而且特别容易出错,需要引起重视。4 P; K# F" F4 B7 n7 v
; R8 X e1 M8 f, M3 A- Y2 v+ w/ Q a4 u
题目名称 来源 个人题解 备注
- r0 N6 s# _; d# T. r+ I+ A29.KMP算法 经典算法 戳我前往 经典字符串匹配算法
+ v8 s. }% p h- v30.拼写单词 Leetcode题1160:戳我前往 戳我前往 很简单的字符串问题
' d# E. D8 m- j h' I- C$ K31.竖直打印单词 Leetcode题1324:戳我前往 戳我前往 简单但值得思考 s8 d a/ Z2 e
32.不含 AAA 或 BBB 的字符串 Leetcode题984:戳我前往 戳我前往 巧妙构造出字符串% @& i, q2 b9 g
33.实现Trie(前缀树) Leetcode题208:戳我前往 戳我前往 字符串中经典的算法9 D& C2 q% [9 C* {& s
34.最长快乐前缀 Leetcode题1392:戳我前往 戳我前往 如何处理字符串的前后缀
. b! N/ z$ v3 v. k4 d; f35.单词搜索II Leetcode题212:戳我前往 戳我前往 前缀树的应用1 S `& m& p8 w1 ^
36.单词的压缩编码 Leetcode题820:戳我前往 戳我前往 前缀树灵活运用
; I" x; X; _/ D/ c37.判定字符是否唯一 《程序员面试金典》01.02 戳我前往 简单但值得思考. J Z1 p9 N: r5 k( B7 Y) x8 ^
38.判定是否互为字符重排 《程序员面试金典》 01.02 戳我前往 简单的面试题0 p' U9 r# r5 c+ h
39.无重复字符的最长子串 Leetcode题3:戳我前往 戳我前往 字符串中的滑动窗口
. k" w! P" D. o/ e5 \40.字符串转换整数 Leetcode题8:戳我前往 戳我前往 需要考虑的细节很多% R! B, t) n& X/ W6 F! E; I
41.翻转字符串里的单词 Leetcode题151:戳我前往 戳我前往 正则匹配 t9 x% V' @0 J1 C! A% N
42.整数转换英文表示 Leetcode题273:戳我前往 戳我前往 非常实用的算法题# z( r0 [ [$ l( \) W8 B) |
43.统计重复个数 Leetcode题466:戳我前往 戳我前往 循环结剪枝, i2 b# j1 d& ~% Z4 c9 g
44.超级回文数 Leetcode题906:戳我前往 戳我前往 字符串与大数的处理思路% u6 [- i9 ^5 i2 d) U
45.单词子集 Leetcode题96:戳我前往 戳我前往 特征思想的应用
! m0 ~+ U' U6 P, n/ Z分类四:容器类(哈希表,栈,队列,Map,Set)
/ ~7 ~! X, Z+ J8 P3 }( O容器类的算法题一般需要根据一些容器的特点来解决响应的问题,还有需要选择合适的容器进行新的数据结构的设计,掌握它们的使用,非常重要。3 B& g7 e, B% i- R
/ r) {0 U( b' @" h! ?+ F% m! J
: a2 N; d# N7 K: L' j$ f
题目名称 来源 个人题解 备注
6 L) y' m" h" q# i6 F46.按位与为零的三元组 Leetcode题82:戳我前往 戳我前往 哈希表优化
' n: S; J# t8 Y3 g' i47.设计地铁系统 Leetcode题1396:戳我前往 戳我前往 合理选择容器
$ C9 p) E0 A) O48.LFU缓存 《程序员面试金典》 戳我前往 选择容器来设计
5 [2 b5 {0 v6 a) _! n8 }1 {' I49.设计推特 Leetcode题355:戳我前往 戳我前往 很实用的算法
* r1 \: I" u, W0 ^$ A; W2 A2 u50.最小栈 Leetcode题155:戳我前往 戳我前往 两栈设计最小栈
% u: ]! R) J) j7 i5 R% g0 e51.子数组的最小值之和 Leetcode题907:戳我前往 戳我前往 单调栈的应用# u* F/ |! P, c; e* H7 c9 L
52.栈的压入、弹出序列 《剑指offer》 戳我前往 栈的合法序列( B/ F. c0 C% `
53.有效括号的嵌套深度 Leetcode题1111:戳我前往 戳我前往 模仿栈
0 p# p1 {0 J1 Z& Q54.逆波兰算法 经典算法 戳我前往 后缀表达式关键算法
3 _: {+ j' G$ N- i% r分类五:数学思维类(含位运算思想)
# ^: _2 o0 f- n" a$ l! X2 i9 T数学思维类的题由于需要很强大的数学思维,但是这又不是一天可以练成的,所以,也常常在面试中会被问到,只有慢慢的积累,才是王道。
! H- L! r: X6 G* |& ], \9 E! l: c
+ Q; K4 V. E- P4 p5 S1 d题目名称 来源 个人题解 备注
3 H& ?/ D R& ^3 ~% [ r3 |* \55.水壶问题 Leetcode题365:戳我前往 戳我前往 经典数学问题 f2 C! t/ [5 Y# z# m0 D4 ?9 B! Z
56.三维形体的表面积 Leetcode题892:戳我前往 戳我前往 空间思想解决算法问题
; V& L. M M( k4 j5 B57.生命游戏 Leetcode题289:戳我前往 戳我前往 数学思维的运用
( h: I6 Y8 [3 `" m58.交点 《程序员面试金典》16.03 戳我前往 二维平面的交点问题
' i- j0 x5 w$ @59.使数组唯一的最小增量 Leetcode题945:戳我前往 戳我前往 数学思维的运用' [9 ~" y, V( ?. F% z
60.数值的整数次方 《剑指offer》题16 戳我前往 非常容易出错的面试题" l, G1 S$ }1 I% \" E
61.求 1+2+…+n 《剑指offer》 戳我前往 短路原则( v7 O0 ]! t, y0 p3 w# N$ |7 l
62.1~n整数中1出现的次数 《剑指offer》 戳我前往 数学思维找规律: r W$ C2 h8 F: E N
63.数组中数字出现的次数 《剑指offer》 戳我前往 分组异或5 B5 Q: `6 {; t
分类六:链表
6 h) H6 C) ?' R# G4 T, y% r链表是一种非常常见的数据结构,不管在实际应用还是算法竞赛中,都经常出现,掌握对它们的基本处理,非常重要。
9 f7 m9 H8 u6 g, x
( U. b% h/ S% t8 X" ^, W. T' R. |6 l9 V1 I& [
题目名称 来源 个人题解 备注
( R- Z3 b+ `& S64.两数相加 Leetcode题2:戳我前往 戳我前往 链表的加法问题) o R1 T- L6 n4 y
65.链表的中间结点 Leetcode题876:戳我前往 戳我前往 快慢指针思想, o- d" P' a: ^3 h# E
66.删除链表的倒数第N个节点 Leetcode题19:戳我前往 戳我前往 哑节点和双指针2 ^$ @) B% V8 h% ? ~
67.合并两个有序链表 Leetcode题21:戳我前往 戳我前往 链表的递归处理
# Q& r6 H' h& H7 Q- u+ G2 Q" A& s; w68.合并K个排序链表 Leetcode题23:戳我前往 戳我前往 优先队列的使用2 U+ y! f& _- A$ o3 t2 B' m# w
69.删除排序链表中的重复元素 II Leetcode题82:戳我前往 戳我前往 链表基础指针操作
& U. ~! ^+ W/ a) \7 J- s& i2 U/ [70.分隔链表 Leetcode题86:戳我前往 戳我前往 双指针操作5 E) L3 m4 y$ {6 ?) }: b
71.旋转链表 Leetcode题61:戳我前往 戳我前往 巧转循环链表
/ A$ C, R2 g) L% W# j72.两两交换链表中的节点 Leetcode题24:戳我前往 戳我前往 递归解决( \8 u/ F9 ]. e) g3 E @# _' C
73.反转链表 Leetcode题206:戳我前往 戳我前往 多种思路反转链表
" C- J- f: Y. U74.K 个一组翻转链表 Leetcode题25:戳我前往 戳我前往 分组逆转
6 R- C% Z3 K1 L w75.判断链表是否有环 《剑指offer》 戳我前往 多种思路判断链表是否有环
& Q0 h+ d4 N) p$ j& e; S' W76.单链表的插入排序 Leetcode题147:戳我前往 戳我前往 链表的插入排序( V# K, w' V; z" _; G+ ?
77.两数相加 II Leetcode题445:戳我前往 戳我前往 用栈翻转链表元素
6 J+ I7 N* \, @2 {* z \分类七:树/ O- P$ i/ p3 O* W6 R0 I
树也是一种非常重要的数据结构,因为很多容器的底层都设计到树,所以树也成了面试常问的重点了,你需要对他们的一些基本算法题,非常熟练。
& e" I9 T, k7 s: \! X, K8 t
/ _* _( `; D( Q8 [ @( W" g: {- ^0 P4 S. m: B/ J6 z. h
题目名称 来源 个人题解 备注: p$ ]$ u/ D8 l" B6 L4 c( S. d* c
78.删除给定值的叶子结点 Leetcode题1325:戳我前往 戳我前往 树的简单删除问题
" `6 f2 u/ X# t4 ^+ Q3 D& [: O" l79.二叉树的最大最小深度 Leetcode题104:戳我前往 戳我前往 二叉树的深度问题/ n5 C! O& w. F& g
80.将有序数组转换为二叉搜索树 Leetcode题108:戳我前往 戳我前往 数组和二叉树的转换- I- \ w0 m( J9 G- b% j4 F5 Z
81.二叉树的右视图 Leetcode题199:戳我前往 戳我前往 二叉树的视图转换0 U, d# L/ E( N! I
82.另一个树的子树 Leetcode题572:戳我前往 戳我前往 两树关系的判断) J2 ?6 X% o- p
83.二叉树的最近公共祖先 《剑指offer》 戳我前往 公共祖先问题: @; W, g5 H, n+ K6 M% h6 _
84.二叉树的层序遍历序列存储 Leetcode题102:戳我前往 戳我前往 二叉树遍历序列的存储
# z8 Y3 W( [# z5 n6 j; a85.验证二叉搜索树 Leetcode题98:戳我前往 戳我前往 二叉搜索树的验证7 s# _/ j( S+ p$ V. f( d, _
分类八:数组(贪心,二分)
% i6 z$ P5 Y3 `! d! g. }7 X4 x数组类的算法题也是,说难不难,说简单不简单,而且数组是平时编码用的最多的结构了,所以,需要对它的一些基本算法引起重视。4 ^5 }; \7 ], `
' Y8 F8 d7 O9 I6 c$ W2 |
! l- b! R" x6 I0 h题目名称 来源 个人题解 备注
! p/ O) ?& a+ S$ {86.两个数组间的距离值 Leetcode题1385:戳我前往 戳我前往 二分法应用
7 k0 M# V% l" P/ y87.旋转矩阵 《程序员面试金典》 戳我前往 原地修改
6 U$ G0 ^. Z, [88.合并区间 Leetcode题56:戳我前往 戳我前往 排序处理数组问题2 a n& G+ h2 B G( j/ n3 ~. U7 F
89.跳跃游戏 Leetcode题55:戳我前往 戳我前往 贪心思想运用
7 O" Q5 Y- W$ v' |# D) Y1 t5 u90.盛最多水的容器 Leetcode题11:戳我前往 戳我前往 双指针
) w" Y9 V2 P; P+ N$ H91.统计「优美子数组」 Leetcode题1248:戳我前往 戳我前往 滑动窗口% x+ g4 A) ]& x
92.搜索旋转排序数组 Leetcode题33:戳我前往 戳我前往 二分搜索1 v, M- G- @1 y+ W
93.山脉数组中查找目标值 Leetcode题1095:戳我前往 戳我前往 二分搜索
: i" X; `( |7 j: t! o: }6 d: h94.快乐数 Leetcode题202:戳我前往 戳我前往 快慢指针判断成环思路3 j4 I5 E8 i& M5 d
95.跳跃游戏 II Leetcode题45:戳我前往 戳我前往 贪心思想" v C$ ~* _8 r1 X) x
96.x 的平方根 Leetcode题69:戳我前往 戳我前往 二分法取平方根
1 t0 w4 @6 ~1 T! U97.数组中的逆序对 《剑指offer》题51 戳我前往 归并中的计数(分治)
- t& Z* I& i1 q# y& j/ R# ]98.课程表 II Leetcode题210:戳我前往 戳我前往 数组中的拓扑排序- u3 z. f( T+ V2 Y# z. {
分类九:经典算法列举
# J4 q9 x) n9 Z( y最后两个,凑个整,刚好100,是一些比较经典的算法列举。
* e( t& H/ y+ j( H: ^% |2 K; d% [! K7 m4 t
6 H% V% _; b( t2 C, D题目名称 来源 个人题解 备注
, A. Z- _) Z: O% D; M0 o+ R a4 u99.普利姆算法 经典算法 戳我前往 最小生成树经典算法
9 k% e5 l8 ~! ~, |- M0 O r) |100.约瑟夫环 经典算法 戳我前往 很经典的动态问题" a9 N5 |+ P& O* R+ l0 w6 ?
0x04.End: h' V5 t8 l$ ]- l7 H( }3 c
希望这100个算法题能对正在看的你有所帮助!
3 U! [4 n' L" {. D! o$ }, Z. G后续还会继续更新更多的内容。6 `+ Z/ U: p% {5 A0 ]6 R
您的支持,是我分享的不竭动力!- ~' A0 c% [* S+ v7 S5 A
6 _* h6 ~9 o: @0 `3 _4 D3 v3 p3 i, l. A/ z
3 s i- l$ e! V# s) M0 k* G! D4 o– ATFWUS 2020-05-18
0 J, B4 @ b% O# |7 A z————————————————
5 D/ y) J/ p4 `1 r版权声明:本文为CSDN博主「ATFWUS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
+ W; h( g8 }- g7 T0 y$ i1 q原文链接:https://blog.csdn.net/ATFWUS/article/details/106193067% j+ I! ^; i6 M% u2 Z! l, S
+ s! @" {- x# [6 b/ U' h0 V
7 n; h: }% l8 P) O- _& a6 @" P. ]
|
zan
|