- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563349 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174228
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
- S& O; _7 V) `5 P2020最新-精选基础算法100题(面试必备)" _$ d* a% C4 h" _. D
0 S+ d( {5 G' @3 {* B3 |* W1 `0x01.概述
, X% v+ B+ J4 u8 t作为一个程序员,算法能力必不可少,虽然不一定是算法工程师,但是算法还是彰显着个人的编码能力,面试中也经常会被问到,甚至会被要求临场做算法题,所以,还是好好积累吧。8 {! U' F% t8 D" t5 f
: z- i1 v* \# n7 S: p' N8 q! B1 a
; {7 t& ?2 ]1 K- |6 O个人其实对算法挺有兴趣的,从3月份开始,陆陆续续刷了一些算法题,把一些有意义的记录下来了,也顺便写了一些题解,个人认为,还是挺有收获的。. x, X( Z' u" j R4 _3 L
之前写了一篇算法文章的目录,不过后来就忘了实时去更新了,于是现在,想把之前做过的一些有意义的算法题分享出来,刚好整理了100篇比较有意义的。希望对大家有所帮助。4 v/ B% E+ r" s: j* [% l6 \; D
& A. M& u! y6 e! n- X0 d- w+ B
% w' j: q7 \1 V8 F
, B, P) ]: ~- y4 Q: z6 l
9 }% l0 ?' c- a# E7 j, X: F) M0x02.说明
) d2 s, C; l. W% }3 P1 M+ F6 J: ?关于语言的选择:
5 H9 P" @1 M% e5 H3 p& S L& W- t# j5 ?" J* ^; B+ s& V0 q) u
) J3 H) z( G; v9 b. ?% T. S0 l) j; f& o
前半段主要用C++写的,后半段主要用Java写的。 }5 s' H: D0 v4 m
其实什么语言没有太大区别,主要是思想,用着顺手就行。
! O; J Z( e% [5 a9 H: ?这里安利一波Java,哈哈,Java写算法题写多了,真的比较舒适。
+ {1 \9 ^. d, K; b5 d关于文章类型的选择:1 i6 V& C+ ]$ h L) e
+ D b( K4 ]' F8 ~: P$ H6 k/ B" J" w" C& K; V: f
选取了一些较为基本的算法类型,都是比较常见的。
$ O N2 ^% g- z- Q& @5 B不涉及ACM等难度太高的题,大佬们移步哈。
& s9 e# c# |* O% V, w; ]都是一些比较经典的问题。
q* q" e3 @' o5 ]3 f) }9 V: z' R: Q0 s) _关于题目的来源:
* q( V$ f7 a) H& d/ a- R7 @5 s, W# s1 l2 P
, r' a; C& A% |( p4 R平时主要刷题的平台是Leetcode,因为是函数式的,比较方便。1 |) B5 S9 x- N0 h
还有一些是在《剑指offer》,《程序员面试金典》中看到比较好的,所有题目后面都给出了出处。
* _ I9 f4 q+ O+ A关于题解的说明:! q+ o" Q2 T Z- U" ~# V: W- |
% R" @* m+ P: p A
6 n8 l4 z( F" N E* ? g题解是我自己所写,有时候也参考了一些官方题解的思想,可能更好理解。
4 S# N, O0 z u- m题解的代码都提交测试过的,保证暂时没有问题。
( J6 k+ t2 {2 z( B% u: Q/ n6 R个人水平有限,可能文章里面存在一些问题,还望大佬多多指点。
7 \$ V8 _8 M; O. X! j每个题目附带了原文链接,不喜欢阅读我题解的小伙伴们也可以直接移步原出处哈。
* \4 E9 V9 [. h( C- s关于算法能力提升的一些意见:! P4 \9 }8 I+ V, S; j- Z
' e M% s* l3 a
, K# n) _8 \6 R% P( K8 n个人认为,算法来说,思想最为重要,有算法的严谨思想,才是算法能力提升的基础。( A/ N2 c$ u |: W1 ^% T# R
刷题就是培养算法思想的一种实际行动。
- }- @! ]2 ] I/ ^& @# @# x好好理解透一个问题,或者一类问题,远胜于你麻木的刷大量的题。0 T, p0 f8 }% a6 `) }
算法确实也有模板题,只需要照着模板就能做出,但问题是,照着模板就一定能做出来嘛,是否真正理解了为什么这个模板可以通用。
, ~/ m" U9 q v5 B关于分类:4 P1 O0 c, L' y4 ]
( n! F! ]$ v. {. i# s6 h, n4 p/ n( E5 ]1 _2 U' s* w
有些分类确实不太好分,所以就单独列出来了。 h# N$ w8 O2 b3 `2 p/ _
主要的还是区分开来了。3 S2 o. n* z: b- t( U q
0x03.正文–精选算法100题(附个人题解)
7 H) U3 H0 d- ]6 V/ ~分类一:动态规划(dp)% g1 N7 K1 c5 k- B4 M- s
没错,就是你熟悉的dp,dp说简单也简单,说难也实在是太难了,重点是如何找到里面的状态转移方程。经过这些题目的训练,希望你能有一些初步的dp思路了。
$ n6 |1 L5 o5 U8 y
6 p$ C0 _4 j. _/ p
+ s% G1 b% R) q- `! u( b( y题目名称 来源 个人题解 备注& V6 W) \2 b; W0 i& |: g" I
01.打家劫舍 Leetcode题198:戳我前往 戳我前往 估计是最好的dp入门题型了9 l& B+ b: \2 v) A
02.斐波拉契数列 经典问题 戳我前往 确实比较经典哦~
1 P3 K2 z4 n4 }4 c. A& M03.零钱兑换问题 Leetcode题322:戳我前往 戳我前往 也是一个比较经典的问题了: S" v+ d: ?% w0 {4 i1 q
04.零钱兑换II Leetcode题518:戳我前往 戳我前往 零钱问题通用解法3 r3 c( E; X! y8 L( R2 {# J0 i" k6 l
05.最长上升子序列 Leetcode题300:戳我前往 戳我前往 堪称数组dp中的典范
% R, `) E% h F5 a4 y+ J! W' k06.牌型种数 蓝桥杯:链接暂无 戳我前往 二维动态规划,要仔细想想
6 g4 ^ L( ^& s# M3 T07.最低票价 Leetcode题983:戳我前往 戳我前往 如何状态转移?9 u8 {- c/ c! t( f
08.不同的二叉搜索树 Leetcode题152:戳我前往 戳我前往 你会发现dp的神奇之处- f+ U* m) t5 `) }
09.礼物的最大价值 《剑指offer》题47 戳我前往 优化dp的思路
1 s# q/ S/ L& H) Z9 e# Q& N10.接雨水 Leetcode题42:戳我前往 戳我前往 需要仔细思考以发现dp5 {1 T* R5 u! @- b2 [
11.编辑距离 Leetcode题72:戳我前往 戳我前往 最为经典的二维dp题型2 w7 |6 ]# J/ X
12.买卖股票的最佳时机(6题) Leetcode6题:戳我前往 戳我前往 统一化的dp思维,棒1 ]6 O$ o% \& i' y0 [. s. z
13.鸡蛋掉落 Leetcode题887:戳我前往 戳我前往 有些难度哦~
: D- v; W; d# F- B6 L- G14.最大正方形 Leetcode题221:戳我前往 戳我前往 矩阵中的dp思路
1 q8 [4 o( `! V* T15.和为K的子数组 Leetcode题560:戳我前往 戳我前往 前缀和也是dp的思路
& K9 O" x; I' k* \. l分类二:搜索类(DFS,BFS,回溯,暴力搜索)2 {* @5 D1 W L) P+ A+ c5 w
搜索类的算法题应该是随便哪个算法比赛都可以看到,虽然经典,但在这上面还是会有比较难的问题,所以,掌握基本思路和套路就显得格外重要。
8 k9 W! X" p9 _( m+ k r& J. c& z+ |, a) i
" M& I- m5 n3 I9 k
题目名称 来源 个人题解 备注- S) I2 k0 L/ \7 s: R& L# t
16.图的深搜和广搜 经典问题 戳我前往 搜索中的经典问题$ g0 O9 W- F& I7 `
17.方格填数 蓝桥杯:链接暂无 戳我前往 揣摩一下DFS的思路: V8 Q. P' s. o6 x
18.路径之谜 蓝桥杯:链接暂无 戳我前往 经典改编迷宫问题
+ t- h# |5 g5 [; t19.岛屿的最大面积 Leetcode题695:戳我前往 戳我前往 最常见的矩阵中的DFS
7 N/ P9 O" r5 a$ c20.逃离大迷宫 Leetcode题1036:戳我前往 戳我前往 各种搜索思想都可以应用& P$ R, ?, P+ S: m0 n5 B) P
21.单词搜索 Leetcode题79:戳我前往 戳我前往 字符串中的搜索4 Y2 d9 ? ~# i1 f* b: K( u
22.检查网格中是否存在有效路径 Leetcode题1391:戳我前往 戳我前往 思考另类的搜索: \, g3 ~) ~6 Y" w
23.地图分析 Leetcode题1162:戳我前往 戳我前往 多源BFS3 j' K% J4 o1 k
24.机器人的运动范围 《剑指offer》13题 戳我前往 DFS进行计数的基本思路
3 f' `6 c6 k# ~0 g25.括号生成 Leetcode题22:戳我前往 戳我前往 用DFS生产括号) J/ f9 g0 e0 q1 D4 w
26.01 矩阵 Leetcode题542:戳我前往 戳我前往 矩阵中的搜索+ Z. B( |+ {9 W! x; ?- ^
27.岛屿数量 Leetcode题200:戳我前往 戳我前往 根据需求使用DFS: F+ m4 o3 V4 ~3 Y3 R9 w
28.全排列问题 Leetcode题46:戳我前往 戳我前往 最经典的回溯算法
6 E- V" U3 T2 t" Z% \分类三:字符串$ n! z3 q$ W) u8 M3 t7 H
别忽视字符串的算法问题,它难起来可以非常难,简单的也很简单,面试喜欢提问,而且特别容易出错,需要引起重视。8 ~1 e, A2 o* r) @+ ~
1 z* S1 u7 C4 o8 z+ |! i7 Y$ _7 j, V0 L6 |0 B8 j6 M
题目名称 来源 个人题解 备注
2 \! U/ m" a" f# ^8 h+ h9 P6 O29.KMP算法 经典算法 戳我前往 经典字符串匹配算法
! l% H8 y! { U9 _. Z30.拼写单词 Leetcode题1160:戳我前往 戳我前往 很简单的字符串问题
0 X- P0 a) A8 c9 [( G% |9 x31.竖直打印单词 Leetcode题1324:戳我前往 戳我前往 简单但值得思考
* g! B% T9 u+ {6 g- c32.不含 AAA 或 BBB 的字符串 Leetcode题984:戳我前往 戳我前往 巧妙构造出字符串, ~# z( C! P" }/ _
33.实现Trie(前缀树) Leetcode题208:戳我前往 戳我前往 字符串中经典的算法
" e! h4 c' w& ?7 [34.最长快乐前缀 Leetcode题1392:戳我前往 戳我前往 如何处理字符串的前后缀: `7 d, \8 j4 {2 w; s/ m! [: N
35.单词搜索II Leetcode题212:戳我前往 戳我前往 前缀树的应用0 O1 v$ W) D9 ~3 T! l5 m
36.单词的压缩编码 Leetcode题820:戳我前往 戳我前往 前缀树灵活运用0 e. ~! `( H" T" ^. D
37.判定字符是否唯一 《程序员面试金典》01.02 戳我前往 简单但值得思考
9 _* Y1 {8 L/ k3 @* n' X: I) _6 \38.判定是否互为字符重排 《程序员面试金典》 01.02 戳我前往 简单的面试题
5 r" g1 f' L% W3 t+ v39.无重复字符的最长子串 Leetcode题3:戳我前往 戳我前往 字符串中的滑动窗口3 l! G, I$ t& F5 |7 z7 X- m
40.字符串转换整数 Leetcode题8:戳我前往 戳我前往 需要考虑的细节很多) j! k4 u1 z0 K, w, z
41.翻转字符串里的单词 Leetcode题151:戳我前往 戳我前往 正则匹配
- M! e2 V9 J' B7 m$ h3 a) Y* y42.整数转换英文表示 Leetcode题273:戳我前往 戳我前往 非常实用的算法题
1 K! a4 J, g7 z; R; y: k. |43.统计重复个数 Leetcode题466:戳我前往 戳我前往 循环结剪枝) {) s" i7 w3 u! d
44.超级回文数 Leetcode题906:戳我前往 戳我前往 字符串与大数的处理思路. j9 u, v& t; k* d, `/ c
45.单词子集 Leetcode题96:戳我前往 戳我前往 特征思想的应用$ C6 u7 g1 [9 D- t
分类四:容器类(哈希表,栈,队列,Map,Set)
% u6 R) x5 } [1 A) L0 [容器类的算法题一般需要根据一些容器的特点来解决响应的问题,还有需要选择合适的容器进行新的数据结构的设计,掌握它们的使用,非常重要。' R1 z" f$ q( b
6 i1 Z* z2 ~7 L. a! R+ W7 ]9 c4 [5 v
题目名称 来源 个人题解 备注; g7 K9 l! t6 h# V. R8 |9 O, l1 _
46.按位与为零的三元组 Leetcode题82:戳我前往 戳我前往 哈希表优化* P$ ]$ f6 R2 p& U3 r
47.设计地铁系统 Leetcode题1396:戳我前往 戳我前往 合理选择容器
" Z2 G4 F( r* E7 G' F48.LFU缓存 《程序员面试金典》 戳我前往 选择容器来设计' O1 Z5 j4 U4 T0 y2 I$ s
49.设计推特 Leetcode题355:戳我前往 戳我前往 很实用的算法- P' s5 s) t, }( T/ z
50.最小栈 Leetcode题155:戳我前往 戳我前往 两栈设计最小栈
6 F% ^0 U+ ^" u4 r# H. Q8 ~51.子数组的最小值之和 Leetcode题907:戳我前往 戳我前往 单调栈的应用
. A0 p- r! P( m: m$ n/ A52.栈的压入、弹出序列 《剑指offer》 戳我前往 栈的合法序列4 s; w' _* J9 h* \/ P/ ^. G
53.有效括号的嵌套深度 Leetcode题1111:戳我前往 戳我前往 模仿栈
; q G3 k( G* B54.逆波兰算法 经典算法 戳我前往 后缀表达式关键算法
) K; V7 s# J! z0 i分类五:数学思维类(含位运算思想)
; M: f9 n1 S- K5 W: a* E数学思维类的题由于需要很强大的数学思维,但是这又不是一天可以练成的,所以,也常常在面试中会被问到,只有慢慢的积累,才是王道。
% Y' Y* H3 F1 m" O, r8 ~4 |* }# H G1 ^! ?& ?* e) j
+ X' w4 L2 V8 G# o* n. q! [题目名称 来源 个人题解 备注% u* X; y) H6 F9 R* Q4 I
55.水壶问题 Leetcode题365:戳我前往 戳我前往 经典数学问题* j6 M. ]7 Z5 c2 l1 V# Q
56.三维形体的表面积 Leetcode题892:戳我前往 戳我前往 空间思想解决算法问题
7 @ d+ I+ k% [6 j' V5 f6 v57.生命游戏 Leetcode题289:戳我前往 戳我前往 数学思维的运用0 a _2 P# F! G$ M7 z( R2 D
58.交点 《程序员面试金典》16.03 戳我前往 二维平面的交点问题2 x% z* i- e, |% K" u
59.使数组唯一的最小增量 Leetcode题945:戳我前往 戳我前往 数学思维的运用0 l; ^2 c* X# f' ?
60.数值的整数次方 《剑指offer》题16 戳我前往 非常容易出错的面试题 ^0 d) W: y m: u
61.求 1+2+…+n 《剑指offer》 戳我前往 短路原则+ v% y4 q( I, @( U5 n: l4 E# Y+ d
62.1~n整数中1出现的次数 《剑指offer》 戳我前往 数学思维找规律% V9 [6 F( g: ~8 x
63.数组中数字出现的次数 《剑指offer》 戳我前往 分组异或
4 z5 F2 Y$ L. y2 N4 T, Y% Z, P$ t6 k分类六:链表9 R' W* N" p7 _$ y4 V0 m
链表是一种非常常见的数据结构,不管在实际应用还是算法竞赛中,都经常出现,掌握对它们的基本处理,非常重要。
" D0 K9 I" p- P0 R* ~* F5 K: n* N5 F
5 U+ z5 S6 X2 K& T" L
题目名称 来源 个人题解 备注3 [5 x8 e( w% ~
64.两数相加 Leetcode题2:戳我前往 戳我前往 链表的加法问题3 y! D4 Q, H: T3 L- o; r1 h
65.链表的中间结点 Leetcode题876:戳我前往 戳我前往 快慢指针思想
1 Q h9 u, ? _0 H66.删除链表的倒数第N个节点 Leetcode题19:戳我前往 戳我前往 哑节点和双指针
+ X, L% w& Q. ~" p3 G% k67.合并两个有序链表 Leetcode题21:戳我前往 戳我前往 链表的递归处理- W2 R _+ ^; R/ C" B
68.合并K个排序链表 Leetcode题23:戳我前往 戳我前往 优先队列的使用6 d3 B# e; F& n$ |7 E
69.删除排序链表中的重复元素 II Leetcode题82:戳我前往 戳我前往 链表基础指针操作* r3 f* M5 H* L$ U4 R- i3 M
70.分隔链表 Leetcode题86:戳我前往 戳我前往 双指针操作7 p9 \5 J, M, t9 Z7 i# v+ @
71.旋转链表 Leetcode题61:戳我前往 戳我前往 巧转循环链表
6 K1 G; P: m7 d( `" e/ _72.两两交换链表中的节点 Leetcode题24:戳我前往 戳我前往 递归解决
0 m D' w" t4 R* K b# ?73.反转链表 Leetcode题206:戳我前往 戳我前往 多种思路反转链表
& Z6 z8 ^9 M* D- K74.K 个一组翻转链表 Leetcode题25:戳我前往 戳我前往 分组逆转
% u& _5 c; M8 n$ g" Z& F0 ~5 F75.判断链表是否有环 《剑指offer》 戳我前往 多种思路判断链表是否有环
' z. f+ i/ X c' \76.单链表的插入排序 Leetcode题147:戳我前往 戳我前往 链表的插入排序5 C+ u3 v: ]: _
77.两数相加 II Leetcode题445:戳我前往 戳我前往 用栈翻转链表元素 X. l: w! f. P% W' ~8 m
分类七:树+ ?/ p# V# X) U, `2 Y
树也是一种非常重要的数据结构,因为很多容器的底层都设计到树,所以树也成了面试常问的重点了,你需要对他们的一些基本算法题,非常熟练。: L8 E4 \* V! j: [. f+ Y3 J
/ m7 X) i) d3 J* t! `5 |- ~5 [1 _; j& T
题目名称 来源 个人题解 备注8 x2 T, |' R9 c6 w" w$ Q. I
78.删除给定值的叶子结点 Leetcode题1325:戳我前往 戳我前往 树的简单删除问题
5 G4 O" [: y; e6 \0 v79.二叉树的最大最小深度 Leetcode题104:戳我前往 戳我前往 二叉树的深度问题, @; F/ c" s5 n, M) j
80.将有序数组转换为二叉搜索树 Leetcode题108:戳我前往 戳我前往 数组和二叉树的转换! ~( _" h! A" q2 c& O& f: ]* p2 j
81.二叉树的右视图 Leetcode题199:戳我前往 戳我前往 二叉树的视图转换
( P+ o* K8 n1 e. B7 D9 ~8 k, _82.另一个树的子树 Leetcode题572:戳我前往 戳我前往 两树关系的判断
, @4 { a, |, ^8 q6 d% h$ X- O" K83.二叉树的最近公共祖先 《剑指offer》 戳我前往 公共祖先问题( k9 d5 `) M$ u- c8 a- s
84.二叉树的层序遍历序列存储 Leetcode题102:戳我前往 戳我前往 二叉树遍历序列的存储0 F- {4 d) N, N, U
85.验证二叉搜索树 Leetcode题98:戳我前往 戳我前往 二叉搜索树的验证% J$ E6 v( m- F$ \
分类八:数组(贪心,二分)
, U) r: U: N# n- T8 `4 I数组类的算法题也是,说难不难,说简单不简单,而且数组是平时编码用的最多的结构了,所以,需要对它的一些基本算法引起重视。
: l8 P& k% y& E( \# @4 I4 F4 L2 u1 ^, ?4 ]
$ s+ h/ L0 M z题目名称 来源 个人题解 备注: D3 h6 z5 V% ^7 p9 Q4 @
86.两个数组间的距离值 Leetcode题1385:戳我前往 戳我前往 二分法应用9 P1 W6 s+ J2 t: S+ v
87.旋转矩阵 《程序员面试金典》 戳我前往 原地修改
$ |- n, g5 \3 R0 k) L# D% L4 X# \88.合并区间 Leetcode题56:戳我前往 戳我前往 排序处理数组问题& W0 w6 p: X' A0 l6 F: h& \
89.跳跃游戏 Leetcode题55:戳我前往 戳我前往 贪心思想运用
% f0 W {, x4 t90.盛最多水的容器 Leetcode题11:戳我前往 戳我前往 双指针' T; ^/ h0 Q' K8 m6 h
91.统计「优美子数组」 Leetcode题1248:戳我前往 戳我前往 滑动窗口
# ^1 Y, K. w# e. r) z& S# H92.搜索旋转排序数组 Leetcode题33:戳我前往 戳我前往 二分搜索
; s9 V* _" t0 b# f6 W: ~# m93.山脉数组中查找目标值 Leetcode题1095:戳我前往 戳我前往 二分搜索/ e* n' {/ y2 @
94.快乐数 Leetcode题202:戳我前往 戳我前往 快慢指针判断成环思路! k. x" `( z. m5 E' w
95.跳跃游戏 II Leetcode题45:戳我前往 戳我前往 贪心思想* S; G/ @6 G, ?3 [! h
96.x 的平方根 Leetcode题69:戳我前往 戳我前往 二分法取平方根
$ b1 e' t7 \+ M# e$ u& m6 H) w: Z( D97.数组中的逆序对 《剑指offer》题51 戳我前往 归并中的计数(分治); P6 |) V9 w; [) h* }, H7 ]! _/ X" J+ ]
98.课程表 II Leetcode题210:戳我前往 戳我前往 数组中的拓扑排序' N4 R+ d, y. E" `( _, I! S/ G
分类九:经典算法列举
$ V; |; W& S; z: n4 u# M% {( j; Z最后两个,凑个整,刚好100,是一些比较经典的算法列举。8 B7 W2 G/ l2 o# z, |4 a4 J
6 R) l' T4 s% G6 Q- g* j. u7 m
# p9 s/ {2 B) f& g/ `6 m) f
题目名称 来源 个人题解 备注
! A0 q3 w! ?: ?9 d" U99.普利姆算法 经典算法 戳我前往 最小生成树经典算法
, e* J0 ` ]" d1 ?0 q5 L1 K4 g100.约瑟夫环 经典算法 戳我前往 很经典的动态问题
8 Z( `! }9 i# ?3 b% M; l3 F0x04.End+ y) i9 |3 ~; Q& z9 j& v- j
希望这100个算法题能对正在看的你有所帮助!7 K% I* g- Z) [8 U
后续还会继续更新更多的内容。
8 X2 ^/ @( Q @) D! n您的支持,是我分享的不竭动力!
3 Q7 N2 {) e, H' J0 Q/ A! s/ X/ p' X) E* L8 u- e# g
# x8 s6 V) a5 u& f3 y7 Z" U9 G
– ATFWUS 2020-05-185 T# @2 B6 f* w9 t7 F! ^6 `
————————————————9 V- l6 a$ E. M! V' w! g" H- O& ^! K ~
版权声明:本文为CSDN博主「ATFWUS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。% E' N/ g' L K; a- D8 t, b0 S; y
原文链接:https://blog.csdn.net/ATFWUS/article/details/106193067' k* e. f8 A8 j! C
# j# x2 F, x$ U9 }. _+ d o2 y# d3 U3 u- ~' [
|
zan
|