- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563260 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174201
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
: _; m' O+ J# V y. k3 D5 e9 P* S
2020最新-精选基础算法100题(面试必备)+ @( F7 r: k; s/ @; ^; T
* N4 E6 g- W- f# a0x01.概述
2 W! d, \2 p6 b! L \0 ?9 m7 W8 C2 M作为一个程序员,算法能力必不可少,虽然不一定是算法工程师,但是算法还是彰显着个人的编码能力,面试中也经常会被问到,甚至会被要求临场做算法题,所以,还是好好积累吧。
" Q$ J4 N9 C1 m$ d% x# W
9 g+ A! D' ?: G5 ?
! F2 P" r1 {$ C& O4 ~个人其实对算法挺有兴趣的,从3月份开始,陆陆续续刷了一些算法题,把一些有意义的记录下来了,也顺便写了一些题解,个人认为,还是挺有收获的。4 G$ W. p" d3 h4 N& E
之前写了一篇算法文章的目录,不过后来就忘了实时去更新了,于是现在,想把之前做过的一些有意义的算法题分享出来,刚好整理了100篇比较有意义的。希望对大家有所帮助。6 X, P/ q0 B' Y$ [
9 _3 z' l2 c0 C( Z% b! _) x
, m# d% B$ l4 W( l' X4 ]
& V5 P3 g( T* x! ^9 t
4 f; H- ~# b! `& o8 y0x02.说明# s2 p! s2 @6 T9 C, |6 R+ U# ~
关于语言的选择:
3 x( G ?) e8 D7 R
; r( B! T2 G, m ~' F3 s3 D4 g8 B4 D* j
前半段主要用C++写的,后半段主要用Java写的。% M0 `) [6 c4 U2 _) x0 c
其实什么语言没有太大区别,主要是思想,用着顺手就行。8 d, i& O- i- D5 S7 x: ], F1 f
这里安利一波Java,哈哈,Java写算法题写多了,真的比较舒适。
4 s; F5 b+ n. ~5 l; o关于文章类型的选择:! a; i( V% J0 h, E5 ~
9 z& g/ ?: h4 t k0 i, \; z0 }1 u
7 l V! p* O8 L) s4 [2 z选取了一些较为基本的算法类型,都是比较常见的。
: y) F6 ~6 E# \# l不涉及ACM等难度太高的题,大佬们移步哈。
; v7 o6 @* }" U5 c7 p2 K# r! g! X都是一些比较经典的问题。
8 w$ g8 ^, z; j' |关于题目的来源:
+ T' b: v9 n( j8 C O' C- b* M. Q( g! [- x; ~4 y1 \# |5 o
8 W0 t: y1 [, o, j( f7 s* R( }
平时主要刷题的平台是Leetcode,因为是函数式的,比较方便。
( n; N9 A" V9 G还有一些是在《剑指offer》,《程序员面试金典》中看到比较好的,所有题目后面都给出了出处。
$ Y6 L5 g4 F" Q/ ^) x关于题解的说明:% S+ h' C8 g6 g4 |: g
7 x/ a6 ^: e' r
# a- _+ n- ?4 ^) m! q4 W: A: Z题解是我自己所写,有时候也参考了一些官方题解的思想,可能更好理解。6 F/ c7 [* b: T7 v3 s
题解的代码都提交测试过的,保证暂时没有问题。
7 Q! v _4 P2 L* j个人水平有限,可能文章里面存在一些问题,还望大佬多多指点。3 }2 f, d0 n3 F' h* C$ w6 a- E* l: W
每个题目附带了原文链接,不喜欢阅读我题解的小伙伴们也可以直接移步原出处哈。$ b+ v5 ~ z; h- I4 z
关于算法能力提升的一些意见:
' p, I# Q% r3 I6 U4 D) y0 L; q7 I* V( d; b* h) z( f& Y7 g. m J- I0 B: c
; C/ K7 c: B, K# R {
个人认为,算法来说,思想最为重要,有算法的严谨思想,才是算法能力提升的基础。
$ n& I$ Y" x* Z4 S0 J- o( f刷题就是培养算法思想的一种实际行动。) R8 {" a/ m& z( |* \0 ]4 _- p
好好理解透一个问题,或者一类问题,远胜于你麻木的刷大量的题。
$ J0 b: T0 @ b/ d" s4 T. v' ]* p( s算法确实也有模板题,只需要照着模板就能做出,但问题是,照着模板就一定能做出来嘛,是否真正理解了为什么这个模板可以通用。
9 b! w& I4 P! d关于分类: R; C8 q v4 W, C1 \
3 y2 I$ Q$ }1 _9 g1 w* e \6 q; R0 m( g
有些分类确实不太好分,所以就单独列出来了。6 n" X# X! }$ A9 m
主要的还是区分开来了。
( ?& I1 Q M, v J& u) p0x03.正文–精选算法100题(附个人题解)' L o9 D k7 N! [( F! z/ `
分类一:动态规划(dp)
* j& V0 ^3 _# Q, i2 C没错,就是你熟悉的dp,dp说简单也简单,说难也实在是太难了,重点是如何找到里面的状态转移方程。经过这些题目的训练,希望你能有一些初步的dp思路了。
3 T9 M2 w1 N: [0 B5 K! z# g* a/ L3 w5 }0 x3 L% H. w
+ D) V# Q3 b* i3 Y& g) w8 A( i/ v
题目名称 来源 个人题解 备注& _! }# Q, v: l' @, K* X
01.打家劫舍 Leetcode题198:戳我前往 戳我前往 估计是最好的dp入门题型了! A* T, o3 H9 D4 D0 |+ c) z
02.斐波拉契数列 经典问题 戳我前往 确实比较经典哦~/ n% e& }) U9 K2 M, K: L2 O" k
03.零钱兑换问题 Leetcode题322:戳我前往 戳我前往 也是一个比较经典的问题了
$ i! B; e# Q$ |04.零钱兑换II Leetcode题518:戳我前往 戳我前往 零钱问题通用解法
, [* @& x, Y/ `05.最长上升子序列 Leetcode题300:戳我前往 戳我前往 堪称数组dp中的典范
0 A1 `/ Q+ W$ N" u4 }: Y06.牌型种数 蓝桥杯:链接暂无 戳我前往 二维动态规划,要仔细想想
6 f+ w, K* R% Z4 C5 e: W1 l0 v07.最低票价 Leetcode题983:戳我前往 戳我前往 如何状态转移?
3 f5 C! Y" `6 I0 J E, |08.不同的二叉搜索树 Leetcode题152:戳我前往 戳我前往 你会发现dp的神奇之处
& O4 V" k; e. b. ?. @5 y3 I: O& G09.礼物的最大价值 《剑指offer》题47 戳我前往 优化dp的思路7 ]2 R2 p# I8 q ~" z3 L7 y, P
10.接雨水 Leetcode题42:戳我前往 戳我前往 需要仔细思考以发现dp4 D: N' h1 b4 y
11.编辑距离 Leetcode题72:戳我前往 戳我前往 最为经典的二维dp题型8 C$ A1 D- W9 T. M+ c5 E3 N
12.买卖股票的最佳时机(6题) Leetcode6题:戳我前往 戳我前往 统一化的dp思维,棒5 }0 K8 H* ^/ a4 o6 p0 a
13.鸡蛋掉落 Leetcode题887:戳我前往 戳我前往 有些难度哦~
+ L8 x( X, L7 l# N14.最大正方形 Leetcode题221:戳我前往 戳我前往 矩阵中的dp思路
, o/ _1 s: Y3 H- _) @# h% P15.和为K的子数组 Leetcode题560:戳我前往 戳我前往 前缀和也是dp的思路
8 f9 t$ o4 D3 N& [1 d分类二:搜索类(DFS,BFS,回溯,暴力搜索)
# D$ u9 E+ ]3 S搜索类的算法题应该是随便哪个算法比赛都可以看到,虽然经典,但在这上面还是会有比较难的问题,所以,掌握基本思路和套路就显得格外重要。1 ]6 d/ m" x: L, i" U6 D1 [3 s
$ W! \" H* ?8 p; q. T" X
* ^! g+ I" b. ^; ^+ Y题目名称 来源 个人题解 备注
! y A7 t- |8 O16.图的深搜和广搜 经典问题 戳我前往 搜索中的经典问题 s! l1 ?: o) t$ k% I
17.方格填数 蓝桥杯:链接暂无 戳我前往 揣摩一下DFS的思路! S, _1 |5 y9 W. } y8 }
18.路径之谜 蓝桥杯:链接暂无 戳我前往 经典改编迷宫问题
& O8 W4 h3 h3 x+ V2 o/ ~, K0 ~19.岛屿的最大面积 Leetcode题695:戳我前往 戳我前往 最常见的矩阵中的DFS- m, L/ l4 g2 y5 j* _4 o% L
20.逃离大迷宫 Leetcode题1036:戳我前往 戳我前往 各种搜索思想都可以应用* |6 u( K9 h& L; X
21.单词搜索 Leetcode题79:戳我前往 戳我前往 字符串中的搜索' u, U( ^' W0 h
22.检查网格中是否存在有效路径 Leetcode题1391:戳我前往 戳我前往 思考另类的搜索
4 R7 r' _: W' j23.地图分析 Leetcode题1162:戳我前往 戳我前往 多源BFS$ J2 @+ T" ]1 J& E
24.机器人的运动范围 《剑指offer》13题 戳我前往 DFS进行计数的基本思路/ s, X1 W2 K- @# Y" e! @( Z
25.括号生成 Leetcode题22:戳我前往 戳我前往 用DFS生产括号
. B8 h7 L, W# [26.01 矩阵 Leetcode题542:戳我前往 戳我前往 矩阵中的搜索# D+ t# A/ H8 R2 {/ o X
27.岛屿数量 Leetcode题200:戳我前往 戳我前往 根据需求使用DFS& }2 O8 T u2 e+ A8 d! N- n
28.全排列问题 Leetcode题46:戳我前往 戳我前往 最经典的回溯算法
2 K4 j8 v( Y! Q L3 S分类三:字符串; K8 V- O P1 h
别忽视字符串的算法问题,它难起来可以非常难,简单的也很简单,面试喜欢提问,而且特别容易出错,需要引起重视。! R) o8 d/ v8 W. K$ x
5 t' e6 l1 t2 \5 h, u' N! V S/ T# n
& g: R5 g; g' N" Z题目名称 来源 个人题解 备注# r' R5 _0 {' c/ d' t+ B" @! }9 m
29.KMP算法 经典算法 戳我前往 经典字符串匹配算法
/ k6 h/ b6 l. k S9 r7 {# g4 C30.拼写单词 Leetcode题1160:戳我前往 戳我前往 很简单的字符串问题& P2 K. v- s: _) [" s
31.竖直打印单词 Leetcode题1324:戳我前往 戳我前往 简单但值得思考: A& J- b; }# M7 x0 k1 p
32.不含 AAA 或 BBB 的字符串 Leetcode题984:戳我前往 戳我前往 巧妙构造出字符串
% G: T E/ O( n/ { N7 G; a! T33.实现Trie(前缀树) Leetcode题208:戳我前往 戳我前往 字符串中经典的算法
2 n D' V# _0 w34.最长快乐前缀 Leetcode题1392:戳我前往 戳我前往 如何处理字符串的前后缀6 V5 d( x2 V6 p$ _" F$ C' y
35.单词搜索II Leetcode题212:戳我前往 戳我前往 前缀树的应用
4 A* \; }3 h' T* P' X36.单词的压缩编码 Leetcode题820:戳我前往 戳我前往 前缀树灵活运用
/ {& [4 h8 m9 y3 X6 q7 h. z! ]37.判定字符是否唯一 《程序员面试金典》01.02 戳我前往 简单但值得思考/ @2 M) t- c# B1 c+ S
38.判定是否互为字符重排 《程序员面试金典》 01.02 戳我前往 简单的面试题9 z0 T$ \2 B* q' M. E7 G, n4 S
39.无重复字符的最长子串 Leetcode题3:戳我前往 戳我前往 字符串中的滑动窗口4 l2 e& I$ y% v2 x# N# j
40.字符串转换整数 Leetcode题8:戳我前往 戳我前往 需要考虑的细节很多
8 P/ g N( `0 ~. |4 z9 m41.翻转字符串里的单词 Leetcode题151:戳我前往 戳我前往 正则匹配( m2 u1 g- z& g$ p
42.整数转换英文表示 Leetcode题273:戳我前往 戳我前往 非常实用的算法题" u) H: q( }& o; Z
43.统计重复个数 Leetcode题466:戳我前往 戳我前往 循环结剪枝
1 O% A3 d( P8 ]% J- l44.超级回文数 Leetcode题906:戳我前往 戳我前往 字符串与大数的处理思路
0 a$ A. ?% v, \* r. n+ e0 n# a45.单词子集 Leetcode题96:戳我前往 戳我前往 特征思想的应用
" [7 b* Q9 [) e# F' H' O分类四:容器类(哈希表,栈,队列,Map,Set)
2 m4 Q/ J) r6 b容器类的算法题一般需要根据一些容器的特点来解决响应的问题,还有需要选择合适的容器进行新的数据结构的设计,掌握它们的使用,非常重要。
8 M0 R. B# K; f) M; v) k% Y
! C3 _0 w; c" P4 ]+ I- G" C6 T" ^+ k7 j" N; B
题目名称 来源 个人题解 备注1 t8 ~% ]+ z3 z' Q! H5 G' H& i& j
46.按位与为零的三元组 Leetcode题82:戳我前往 戳我前往 哈希表优化0 F0 e" S* D u9 e8 I5 T
47.设计地铁系统 Leetcode题1396:戳我前往 戳我前往 合理选择容器% _/ k" Q' ]' `7 C* H' {
48.LFU缓存 《程序员面试金典》 戳我前往 选择容器来设计* \/ s. l& ]$ |1 D" B: v
49.设计推特 Leetcode题355:戳我前往 戳我前往 很实用的算法6 W: B! I4 y4 l$ V* r' p3 ?/ x
50.最小栈 Leetcode题155:戳我前往 戳我前往 两栈设计最小栈- W q3 t$ g1 F+ @
51.子数组的最小值之和 Leetcode题907:戳我前往 戳我前往 单调栈的应用' q7 M4 a6 A7 |1 _" ?# |
52.栈的压入、弹出序列 《剑指offer》 戳我前往 栈的合法序列4 a s+ q4 z1 H$ v8 v8 M
53.有效括号的嵌套深度 Leetcode题1111:戳我前往 戳我前往 模仿栈1 S: P) a" C) b l
54.逆波兰算法 经典算法 戳我前往 后缀表达式关键算法/ E5 b5 r. r4 }& o" r( t
分类五:数学思维类(含位运算思想)/ s6 H4 J0 z! g) n% V9 C# X
数学思维类的题由于需要很强大的数学思维,但是这又不是一天可以练成的,所以,也常常在面试中会被问到,只有慢慢的积累,才是王道。$ H: ^ I9 ? \$ h& d9 J
6 e4 g* Y ]2 t4 k8 S, d7 E& e/ h6 O
题目名称 来源 个人题解 备注
M; z8 C2 G9 b. S55.水壶问题 Leetcode题365:戳我前往 戳我前往 经典数学问题7 N; J- q7 j! U2 O1 a5 E
56.三维形体的表面积 Leetcode题892:戳我前往 戳我前往 空间思想解决算法问题5 m; V- A4 E7 R m. w5 c
57.生命游戏 Leetcode题289:戳我前往 戳我前往 数学思维的运用
+ ]7 m0 d/ c2 m/ V: g, i- s3 {" }58.交点 《程序员面试金典》16.03 戳我前往 二维平面的交点问题. P. y! j8 E ^8 t1 f
59.使数组唯一的最小增量 Leetcode题945:戳我前往 戳我前往 数学思维的运用' b' ^8 W3 Q2 }( D) ?7 _$ z
60.数值的整数次方 《剑指offer》题16 戳我前往 非常容易出错的面试题
7 W" N+ q3 r$ A, s- s61.求 1+2+…+n 《剑指offer》 戳我前往 短路原则
, D" g: Z! S- l$ q; O62.1~n整数中1出现的次数 《剑指offer》 戳我前往 数学思维找规律
5 o) h5 S/ w/ \63.数组中数字出现的次数 《剑指offer》 戳我前往 分组异或
: n( S! |" o# m5 H( |3 A. ?分类六:链表
+ L J6 [, t* n链表是一种非常常见的数据结构,不管在实际应用还是算法竞赛中,都经常出现,掌握对它们的基本处理,非常重要。! y- V+ ^2 p9 R# j
! v$ ~& R: E; P& H& f
4 | L1 b. a" H# r9 l3 b) _
题目名称 来源 个人题解 备注& b, ~7 ^* a8 u ?, _
64.两数相加 Leetcode题2:戳我前往 戳我前往 链表的加法问题2 P& t: Q- b8 C8 \0 z9 `
65.链表的中间结点 Leetcode题876:戳我前往 戳我前往 快慢指针思想" ?) m8 _3 M: `8 i0 E) Q2 {
66.删除链表的倒数第N个节点 Leetcode题19:戳我前往 戳我前往 哑节点和双指针
j+ G$ x' D) ^67.合并两个有序链表 Leetcode题21:戳我前往 戳我前往 链表的递归处理
& u& X1 S9 c0 G, b2 E* R* b/ J5 C68.合并K个排序链表 Leetcode题23:戳我前往 戳我前往 优先队列的使用
' N3 Q* S/ K P5 v9 j8 s: m69.删除排序链表中的重复元素 II Leetcode题82:戳我前往 戳我前往 链表基础指针操作) x7 w* T& l" e9 ^9 q1 ~
70.分隔链表 Leetcode题86:戳我前往 戳我前往 双指针操作! @! H( H# b9 t1 J
71.旋转链表 Leetcode题61:戳我前往 戳我前往 巧转循环链表
$ k* N2 L4 ~ A8 x" {1 ^! v2 h# \72.两两交换链表中的节点 Leetcode题24:戳我前往 戳我前往 递归解决
% `' {7 R3 m; E73.反转链表 Leetcode题206:戳我前往 戳我前往 多种思路反转链表
. Q/ C t( w! {9 ~) ]74.K 个一组翻转链表 Leetcode题25:戳我前往 戳我前往 分组逆转9 u( P, n7 Y: ~) g+ D
75.判断链表是否有环 《剑指offer》 戳我前往 多种思路判断链表是否有环/ p' q) m6 g1 Z; U$ Y
76.单链表的插入排序 Leetcode题147:戳我前往 戳我前往 链表的插入排序; ~, `. m( @) ?% i6 u0 N
77.两数相加 II Leetcode题445:戳我前往 戳我前往 用栈翻转链表元素! }5 B( {: a8 q/ J. D
分类七:树
1 {5 C, ^$ e3 `; ~9 w6 ?% m树也是一种非常重要的数据结构,因为很多容器的底层都设计到树,所以树也成了面试常问的重点了,你需要对他们的一些基本算法题,非常熟练。
! @& P' Z/ X' X8 ]" c
3 c- [5 S& r0 N0 k- L% r0 J
+ b+ W3 `4 ^. \0 D- |题目名称 来源 个人题解 备注
# Z, A4 V# I6 V' g5 O, l: O7 R78.删除给定值的叶子结点 Leetcode题1325:戳我前往 戳我前往 树的简单删除问题
) `! O9 a1 k, y# j3 e1 F2 S0 e79.二叉树的最大最小深度 Leetcode题104:戳我前往 戳我前往 二叉树的深度问题7 z. d- O# G0 f/ K Z: s f
80.将有序数组转换为二叉搜索树 Leetcode题108:戳我前往 戳我前往 数组和二叉树的转换/ |- G5 P L( @! u/ C4 v }+ d
81.二叉树的右视图 Leetcode题199:戳我前往 戳我前往 二叉树的视图转换
, U% s0 [- s$ Y; v! x/ d: o% E/ H) o82.另一个树的子树 Leetcode题572:戳我前往 戳我前往 两树关系的判断
( {: V2 }% o8 {4 Y- I0 ~9 r83.二叉树的最近公共祖先 《剑指offer》 戳我前往 公共祖先问题0 j! [/ E" d; c) \
84.二叉树的层序遍历序列存储 Leetcode题102:戳我前往 戳我前往 二叉树遍历序列的存储8 P1 l# u6 v3 s' |) e. o
85.验证二叉搜索树 Leetcode题98:戳我前往 戳我前往 二叉搜索树的验证
. ~- Z5 o' M+ K- m分类八:数组(贪心,二分)$ A2 O" H! w$ w/ M7 U/ P
数组类的算法题也是,说难不难,说简单不简单,而且数组是平时编码用的最多的结构了,所以,需要对它的一些基本算法引起重视。
+ t8 A3 o2 N" _, _. W+ [- x/ J/ ?0 y, m+ Y7 j6 n( F; Q; t0 ~$ N3 x( Y
2 G- t0 `) J6 Q' y* S题目名称 来源 个人题解 备注
6 ]( Z9 I3 K8 [1 U+ i( T8 f: z86.两个数组间的距离值 Leetcode题1385:戳我前往 戳我前往 二分法应用
- s% z, k% f9 f87.旋转矩阵 《程序员面试金典》 戳我前往 原地修改
5 h# x5 A# e# {$ y% y( ?88.合并区间 Leetcode题56:戳我前往 戳我前往 排序处理数组问题. M s& c# D" [3 u; J* ^
89.跳跃游戏 Leetcode题55:戳我前往 戳我前往 贪心思想运用1 W& ~/ ^2 L% m# ?! q0 v* [
90.盛最多水的容器 Leetcode题11:戳我前往 戳我前往 双指针
8 e% B$ A" \4 i& `1 s* @91.统计「优美子数组」 Leetcode题1248:戳我前往 戳我前往 滑动窗口% b* d! a ~! b. F6 ?
92.搜索旋转排序数组 Leetcode题33:戳我前往 戳我前往 二分搜索
* \# E) s6 E% b" @$ ~& w R6 [93.山脉数组中查找目标值 Leetcode题1095:戳我前往 戳我前往 二分搜索
. c6 x( ] i! C4 V94.快乐数 Leetcode题202:戳我前往 戳我前往 快慢指针判断成环思路4 o9 w+ Z; R9 I- T7 k
95.跳跃游戏 II Leetcode题45:戳我前往 戳我前往 贪心思想
' A2 ~" b' F( q. F/ U: V+ _96.x 的平方根 Leetcode题69:戳我前往 戳我前往 二分法取平方根; A) g% v4 K5 X# v" h
97.数组中的逆序对 《剑指offer》题51 戳我前往 归并中的计数(分治)
. j7 A' Q5 R7 A6 m+ M98.课程表 II Leetcode题210:戳我前往 戳我前往 数组中的拓扑排序0 q, G6 I7 i: T( o* A
分类九:经典算法列举. U5 g1 U: ]* v+ B; Q* R0 \8 H
最后两个,凑个整,刚好100,是一些比较经典的算法列举。' ^* F$ n+ ?( j& R( H
2 h7 O: @) {' C5 _2 J9 c% B
( a( K* i; J2 \5 {6 ?3 f- {题目名称 来源 个人题解 备注
( A$ w4 p- h" \6 b. p7 J99.普利姆算法 经典算法 戳我前往 最小生成树经典算法4 ]" G+ K7 N% X1 W8 ^8 p
100.约瑟夫环 经典算法 戳我前往 很经典的动态问题
' y8 ~0 G5 l, ^! e. l. }( l0x04.End
9 D! ^& T/ d" N. G8 A7 D希望这100个算法题能对正在看的你有所帮助!* P4 _( F( t6 I b" }3 D5 l
后续还会继续更新更多的内容。
& M( f7 H! x$ }0 E1 B8 \+ J您的支持,是我分享的不竭动力!3 @& R- p) {3 |. V/ V
4 g3 O9 Z$ H M# N, L4 A) V
: b& A9 O+ F) b i5 }– ATFWUS 2020-05-18' d) j, f; W% X
————————————————, \. g( y2 D& g
版权声明:本文为CSDN博主「ATFWUS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。% I) ^3 Z* M* c- l6 ~/ {
原文链接:https://blog.csdn.net/ATFWUS/article/details/106193067
8 i6 ^2 g1 j( I: o7 W% j# C0 [- Q% ~' G, G8 N' ~3 G
4 x0 D+ n6 V8 {5 K- C. h |
zan
|