- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564469 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174564
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
3 b( `( v- W2 L6 Q' c2 u
2020最新-精选基础算法100题(面试必备)
* r4 f+ X% [5 T1 o+ A8 a/ }, d5 |
2 O5 l% g. l$ D: t+ w2 I0x01.概述
/ M. o/ y' d5 `/ `( O% B作为一个程序员,算法能力必不可少,虽然不一定是算法工程师,但是算法还是彰显着个人的编码能力,面试中也经常会被问到,甚至会被要求临场做算法题,所以,还是好好积累吧。
4 f1 O# g- C& g# n+ U7 C) n. G
: C4 L9 }# t1 p s7 d3 L) k
% c7 c4 A- l& h& ]" u- l& |个人其实对算法挺有兴趣的,从3月份开始,陆陆续续刷了一些算法题,把一些有意义的记录下来了,也顺便写了一些题解,个人认为,还是挺有收获的。
* e$ ]2 ~. }6 u9 \9 u$ R: ~之前写了一篇算法文章的目录,不过后来就忘了实时去更新了,于是现在,想把之前做过的一些有意义的算法题分享出来,刚好整理了100篇比较有意义的。希望对大家有所帮助。
B$ _" r( k" E9 d3 H5 G5 @4 d5 e& Y) q; \8 i: ^ q
- I/ Y0 X$ m1 B
1 Q; k3 ]' ?6 t3 c3 b. b
" z4 h7 i- l2 R: s3 ]# k* }0x02.说明
7 b2 q4 v- q* v关于语言的选择:6 R& X% P0 g0 h! W, t" h! v# `& w
3 |4 l5 l& S5 ]
, x5 _3 c( v- }. U前半段主要用C++写的,后半段主要用Java写的。9 W& i) h) f. V
其实什么语言没有太大区别,主要是思想,用着顺手就行。
- j2 Q/ r7 G7 a这里安利一波Java,哈哈,Java写算法题写多了,真的比较舒适。6 |/ [. t& E& I4 }- A0 \
关于文章类型的选择:
: ?4 R* `7 I2 Y: _) s' p+ u
$ K5 i% {* W$ j' H: O
, @) t+ z; y. F" A4 ]* o选取了一些较为基本的算法类型,都是比较常见的。1 ]! T6 Y8 B7 k- c
不涉及ACM等难度太高的题,大佬们移步哈。) _! p0 y# e' S) q% ~
都是一些比较经典的问题。% S/ d3 | K( ^" q3 v0 d0 Z. [* a
关于题目的来源:
( d" ^* h* x1 Z- @/ o0 j" I
& C: e/ W! g5 I' y3 U6 d& ?1 s& z$ K# q6 e& ~
平时主要刷题的平台是Leetcode,因为是函数式的,比较方便。- E' g" b3 F( ~# H: y& p) Q9 w8 R
还有一些是在《剑指offer》,《程序员面试金典》中看到比较好的,所有题目后面都给出了出处。/ m" R w. I8 H2 n
关于题解的说明:
0 B8 j/ d k: Z. T' b
8 E, {# R# V2 p3 P- C9 y( Y
& {% l1 b: C4 L$ R1 `题解是我自己所写,有时候也参考了一些官方题解的思想,可能更好理解。
$ d3 X' H |7 r* Y( Q: T题解的代码都提交测试过的,保证暂时没有问题。
. P: }& x9 S. j# }个人水平有限,可能文章里面存在一些问题,还望大佬多多指点。4 u! i( O4 ~1 G+ Y H
每个题目附带了原文链接,不喜欢阅读我题解的小伙伴们也可以直接移步原出处哈。* h$ C, e& M: B7 {: O1 w. G! V x
关于算法能力提升的一些意见:
5 S7 e5 { m& p& U
! t4 A% g: ?& u- y& |9 z& t; G6 H- L' x& G
个人认为,算法来说,思想最为重要,有算法的严谨思想,才是算法能力提升的基础。
3 z4 |: T- B) p* w刷题就是培养算法思想的一种实际行动。9 Y( ^9 _) Q+ T
好好理解透一个问题,或者一类问题,远胜于你麻木的刷大量的题。' A; X4 d- l7 F7 E& d7 O1 @+ S' V; ?! H
算法确实也有模板题,只需要照着模板就能做出,但问题是,照着模板就一定能做出来嘛,是否真正理解了为什么这个模板可以通用。- _, a) c/ }: S. B
关于分类:7 E, D3 S! W# X% O. G% B
4 `2 V: \ J; m; [2 P ?' T9 i4 J* K8 n5 P! r
有些分类确实不太好分,所以就单独列出来了。
, n' ?7 z, S$ N$ v主要的还是区分开来了。
3 l7 o6 V' ^1 W$ Z8 d0x03.正文–精选算法100题(附个人题解)
* j4 S- v- b; M' s/ J+ ~) t$ f分类一:动态规划(dp)+ Y6 M, p/ b% R
没错,就是你熟悉的dp,dp说简单也简单,说难也实在是太难了,重点是如何找到里面的状态转移方程。经过这些题目的训练,希望你能有一些初步的dp思路了。0 Q2 e" E8 j1 U. A7 X/ c
' D! C. d+ J6 {* _" {$ w
' t8 h- f- S# R' j+ F4 C题目名称 来源 个人题解 备注
' J. s; F) z+ x- v5 N+ @01.打家劫舍 Leetcode题198:戳我前往 戳我前往 估计是最好的dp入门题型了 q! B# n# B7 ~3 }0 t Q2 m6 D
02.斐波拉契数列 经典问题 戳我前往 确实比较经典哦~
% b8 X8 [' Y, P7 u t03.零钱兑换问题 Leetcode题322:戳我前往 戳我前往 也是一个比较经典的问题了
; |! a, w+ ] S04.零钱兑换II Leetcode题518:戳我前往 戳我前往 零钱问题通用解法% v: y% r) E% n+ k% F
05.最长上升子序列 Leetcode题300:戳我前往 戳我前往 堪称数组dp中的典范3 s+ u6 j5 R/ ~
06.牌型种数 蓝桥杯:链接暂无 戳我前往 二维动态规划,要仔细想想
* ?5 ~; ?% W' U, W4 ]: |- I8 M7 U07.最低票价 Leetcode题983:戳我前往 戳我前往 如何状态转移?$ f1 g1 z2 c1 t# u, U5 {6 u
08.不同的二叉搜索树 Leetcode题152:戳我前往 戳我前往 你会发现dp的神奇之处
3 b0 C6 I. @+ z& Q7 Z09.礼物的最大价值 《剑指offer》题47 戳我前往 优化dp的思路
6 ]3 e, x, j! t) Z# o: S10.接雨水 Leetcode题42:戳我前往 戳我前往 需要仔细思考以发现dp
& n2 ^: J& d/ \( I11.编辑距离 Leetcode题72:戳我前往 戳我前往 最为经典的二维dp题型
" h' M5 P+ N2 ^9 f* ] b& w12.买卖股票的最佳时机(6题) Leetcode6题:戳我前往 戳我前往 统一化的dp思维,棒
* G. z2 R, d( u) @13.鸡蛋掉落 Leetcode题887:戳我前往 戳我前往 有些难度哦~
2 ^, E) g4 i) r# R. [14.最大正方形 Leetcode题221:戳我前往 戳我前往 矩阵中的dp思路7 G( w( S2 [2 Z, G |% J; d
15.和为K的子数组 Leetcode题560:戳我前往 戳我前往 前缀和也是dp的思路
; s% u+ o! @ j+ Z: \ s& \5 h% ^分类二:搜索类(DFS,BFS,回溯,暴力搜索)
$ M* ?7 |( @) e8 G; i搜索类的算法题应该是随便哪个算法比赛都可以看到,虽然经典,但在这上面还是会有比较难的问题,所以,掌握基本思路和套路就显得格外重要。0 P- M5 Y; g) A6 Z! v
( b; z" k0 Y& g) c
' ]1 k [+ W4 n
题目名称 来源 个人题解 备注
- u- F1 v) M) {) X& X0 F+ Y9 L16.图的深搜和广搜 经典问题 戳我前往 搜索中的经典问题/ ^$ @( G+ P4 q
17.方格填数 蓝桥杯:链接暂无 戳我前往 揣摩一下DFS的思路
+ I6 V) E( e+ M# |( A2 z( q18.路径之谜 蓝桥杯:链接暂无 戳我前往 经典改编迷宫问题6 ^8 w0 p1 q6 j
19.岛屿的最大面积 Leetcode题695:戳我前往 戳我前往 最常见的矩阵中的DFS2 k2 G( H4 u# N, x
20.逃离大迷宫 Leetcode题1036:戳我前往 戳我前往 各种搜索思想都可以应用
% q9 M/ j8 P' H21.单词搜索 Leetcode题79:戳我前往 戳我前往 字符串中的搜索
1 y4 @$ L% o( ^; v) i# W0 V5 Y- t22.检查网格中是否存在有效路径 Leetcode题1391:戳我前往 戳我前往 思考另类的搜索% n. v/ {& s1 ?
23.地图分析 Leetcode题1162:戳我前往 戳我前往 多源BFS
O* e0 y3 K" }7 q3 w r X$ Q24.机器人的运动范围 《剑指offer》13题 戳我前往 DFS进行计数的基本思路
# T9 F9 f( ?/ v- G, N4 @25.括号生成 Leetcode题22:戳我前往 戳我前往 用DFS生产括号# f2 j* t: Y& B* ]7 v' R1 B
26.01 矩阵 Leetcode题542:戳我前往 戳我前往 矩阵中的搜索% u+ k0 Z; O+ C! e
27.岛屿数量 Leetcode题200:戳我前往 戳我前往 根据需求使用DFS
( U W1 c8 F3 _28.全排列问题 Leetcode题46:戳我前往 戳我前往 最经典的回溯算法
) g& N( T7 c! {分类三:字符串% P- v* x/ j8 D, I# M+ T. s* P
别忽视字符串的算法问题,它难起来可以非常难,简单的也很简单,面试喜欢提问,而且特别容易出错,需要引起重视。# R/ q) e/ l2 j. U
3 m- \7 c+ u& v0 n5 x
4 I6 D n; t# G2 j6 L. u
题目名称 来源 个人题解 备注9 H7 E+ `6 ~4 I
29.KMP算法 经典算法 戳我前往 经典字符串匹配算法2 F6 b9 k& D X4 h
30.拼写单词 Leetcode题1160:戳我前往 戳我前往 很简单的字符串问题" s! N! h( f5 x' ]/ ]% Y ]
31.竖直打印单词 Leetcode题1324:戳我前往 戳我前往 简单但值得思考$ d M) l$ N& q6 D+ W: P
32.不含 AAA 或 BBB 的字符串 Leetcode题984:戳我前往 戳我前往 巧妙构造出字符串 I D0 U, A) q0 O/ U. p% {
33.实现Trie(前缀树) Leetcode题208:戳我前往 戳我前往 字符串中经典的算法8 {$ P( ]; x1 e1 r
34.最长快乐前缀 Leetcode题1392:戳我前往 戳我前往 如何处理字符串的前后缀
. |+ @# ]; }% l( n" Z35.单词搜索II Leetcode题212:戳我前往 戳我前往 前缀树的应用
0 }& Z: d0 t9 R4 A' Y; i36.单词的压缩编码 Leetcode题820:戳我前往 戳我前往 前缀树灵活运用
1 V7 ^% a4 o/ f3 r, ~37.判定字符是否唯一 《程序员面试金典》01.02 戳我前往 简单但值得思考- y7 x5 n* H! X. K3 e) y
38.判定是否互为字符重排 《程序员面试金典》 01.02 戳我前往 简单的面试题
4 c* B2 L" [5 F. Z/ ?1 `! k39.无重复字符的最长子串 Leetcode题3:戳我前往 戳我前往 字符串中的滑动窗口
4 {: _1 q& D, f" C0 y* U) k8 `40.字符串转换整数 Leetcode题8:戳我前往 戳我前往 需要考虑的细节很多
" C+ o1 ]/ Y( \, b41.翻转字符串里的单词 Leetcode题151:戳我前往 戳我前往 正则匹配
! y w, {* R" c4 k" Z42.整数转换英文表示 Leetcode题273:戳我前往 戳我前往 非常实用的算法题& I- D, p. e- g" _ ^$ C5 D
43.统计重复个数 Leetcode题466:戳我前往 戳我前往 循环结剪枝8 c3 X2 v0 ~7 r
44.超级回文数 Leetcode题906:戳我前往 戳我前往 字符串与大数的处理思路
! `0 ~3 z8 W. \: D45.单词子集 Leetcode题96:戳我前往 戳我前往 特征思想的应用
# i+ Q% z' d$ @" o" S3 ]分类四:容器类(哈希表,栈,队列,Map,Set)
% p$ \( [5 P" p. a容器类的算法题一般需要根据一些容器的特点来解决响应的问题,还有需要选择合适的容器进行新的数据结构的设计,掌握它们的使用,非常重要。
- z! v5 p: b8 q) E0 ~
. n# X; T9 v1 r- ~1 E" l4 G
7 u+ L& j w- w- f+ U题目名称 来源 个人题解 备注
+ `' \9 {: k6 I9 [/ B46.按位与为零的三元组 Leetcode题82:戳我前往 戳我前往 哈希表优化
7 u' M+ J: |- r* v; `9 T: c9 E9 ^47.设计地铁系统 Leetcode题1396:戳我前往 戳我前往 合理选择容器
* _$ v G2 Z' T/ W0 d6 m) e48.LFU缓存 《程序员面试金典》 戳我前往 选择容器来设计% [+ ?* j# s( A8 @4 t1 S7 U8 J5 z
49.设计推特 Leetcode题355:戳我前往 戳我前往 很实用的算法
b2 E" R9 I$ E. F( @3 o50.最小栈 Leetcode题155:戳我前往 戳我前往 两栈设计最小栈
4 a1 H8 P% ~1 A2 _# [51.子数组的最小值之和 Leetcode题907:戳我前往 戳我前往 单调栈的应用! a1 g* a# c2 S6 A1 T. Z9 `6 W) z
52.栈的压入、弹出序列 《剑指offer》 戳我前往 栈的合法序列- k! S4 _2 g7 H9 T
53.有效括号的嵌套深度 Leetcode题1111:戳我前往 戳我前往 模仿栈7 o0 p: }$ b* r E# P6 H
54.逆波兰算法 经典算法 戳我前往 后缀表达式关键算法4 h5 S" z( Q @( M) D! b/ ]- I
分类五:数学思维类(含位运算思想), I5 b% [+ ~( O7 e, ?
数学思维类的题由于需要很强大的数学思维,但是这又不是一天可以练成的,所以,也常常在面试中会被问到,只有慢慢的积累,才是王道。) R' n. r1 t2 d2 G- x2 L
% Y( |2 R" `7 M: e* J* D5 b
$ {5 }1 B0 p X; [+ [- V1 r; U2 @题目名称 来源 个人题解 备注
6 t# g G$ I( _55.水壶问题 Leetcode题365:戳我前往 戳我前往 经典数学问题
4 X4 M' C7 N7 o) E. |( j6 |3 \) q56.三维形体的表面积 Leetcode题892:戳我前往 戳我前往 空间思想解决算法问题
! k3 h/ I3 o) ]57.生命游戏 Leetcode题289:戳我前往 戳我前往 数学思维的运用" L, P8 ]* n: a, E" p1 f+ F
58.交点 《程序员面试金典》16.03 戳我前往 二维平面的交点问题
- T2 f3 n( S7 u" R2 C59.使数组唯一的最小增量 Leetcode题945:戳我前往 戳我前往 数学思维的运用' Q `( k, j& _- x) s' ?4 j, L
60.数值的整数次方 《剑指offer》题16 戳我前往 非常容易出错的面试题. X: _6 m$ m1 r, p/ M
61.求 1+2+…+n 《剑指offer》 戳我前往 短路原则6 f' m2 n# r V. L$ W. Z
62.1~n整数中1出现的次数 《剑指offer》 戳我前往 数学思维找规律4 N9 L# {/ t& J5 o# O5 [- ?
63.数组中数字出现的次数 《剑指offer》 戳我前往 分组异或" i8 d' o: f9 i9 S3 H* s
分类六:链表
. \; ^, q! ~( C/ L链表是一种非常常见的数据结构,不管在实际应用还是算法竞赛中,都经常出现,掌握对它们的基本处理,非常重要。, r8 Z$ D6 f9 y( O1 V7 V! z& m7 X
& V( {) F9 C7 M* c4 K) E
9 D8 M& j1 m2 }0 k8 ? E. h, ] F
题目名称 来源 个人题解 备注
x8 Q! O" t( T9 s8 t9 A8 D64.两数相加 Leetcode题2:戳我前往 戳我前往 链表的加法问题
! a0 k6 M# T; }$ k9 J2 q/ X65.链表的中间结点 Leetcode题876:戳我前往 戳我前往 快慢指针思想
g; T. I! e8 w. P66.删除链表的倒数第N个节点 Leetcode题19:戳我前往 戳我前往 哑节点和双指针5 h! ~% u. C; y; j
67.合并两个有序链表 Leetcode题21:戳我前往 戳我前往 链表的递归处理
6 h( ^2 S# J3 V* Y+ I" ]# o/ G7 w68.合并K个排序链表 Leetcode题23:戳我前往 戳我前往 优先队列的使用2 k$ c$ F/ d. G
69.删除排序链表中的重复元素 II Leetcode题82:戳我前往 戳我前往 链表基础指针操作: Z7 [' _; S, B
70.分隔链表 Leetcode题86:戳我前往 戳我前往 双指针操作
6 D$ H+ x% `* g* Z71.旋转链表 Leetcode题61:戳我前往 戳我前往 巧转循环链表
6 l4 i* h4 K" V+ o! H/ a* Q# |; J72.两两交换链表中的节点 Leetcode题24:戳我前往 戳我前往 递归解决
6 \2 e q2 p% u R73.反转链表 Leetcode题206:戳我前往 戳我前往 多种思路反转链表2 c) i- |! i' E/ e4 X6 S
74.K 个一组翻转链表 Leetcode题25:戳我前往 戳我前往 分组逆转, w7 i5 X! E: g2 Y5 O
75.判断链表是否有环 《剑指offer》 戳我前往 多种思路判断链表是否有环
& ?4 S, T* y' N! u% Y1 V" k76.单链表的插入排序 Leetcode题147:戳我前往 戳我前往 链表的插入排序
" {: J6 N: W4 c' q! K77.两数相加 II Leetcode题445:戳我前往 戳我前往 用栈翻转链表元素3 z& p/ J) z: K: C( P
分类七:树7 M9 {# y$ O" J5 n2 I
树也是一种非常重要的数据结构,因为很多容器的底层都设计到树,所以树也成了面试常问的重点了,你需要对他们的一些基本算法题,非常熟练。
. L+ S& r! Y/ ?/ n9 ~7 b8 E1 h2 D
2 w- {! y# B; {. V' D9 p* }
题目名称 来源 个人题解 备注
6 u7 r& x) H% E- Z78.删除给定值的叶子结点 Leetcode题1325:戳我前往 戳我前往 树的简单删除问题
# `3 i9 I/ A7 f! s' J79.二叉树的最大最小深度 Leetcode题104:戳我前往 戳我前往 二叉树的深度问题
) I7 K4 I3 g# I80.将有序数组转换为二叉搜索树 Leetcode题108:戳我前往 戳我前往 数组和二叉树的转换3 s4 R4 J2 x6 [* U3 e2 n
81.二叉树的右视图 Leetcode题199:戳我前往 戳我前往 二叉树的视图转换. } T0 {* b5 n
82.另一个树的子树 Leetcode题572:戳我前往 戳我前往 两树关系的判断
" |, R6 [ {5 C4 y" A8 c83.二叉树的最近公共祖先 《剑指offer》 戳我前往 公共祖先问题2 l$ s: _& o8 r
84.二叉树的层序遍历序列存储 Leetcode题102:戳我前往 戳我前往 二叉树遍历序列的存储( i, v' k: M8 [" @2 f! a& p* D0 n
85.验证二叉搜索树 Leetcode题98:戳我前往 戳我前往 二叉搜索树的验证
6 S; \# |- P7 W; {+ X2 l% H分类八:数组(贪心,二分)
) Z8 g& i# a+ g/ z) Q% g8 D数组类的算法题也是,说难不难,说简单不简单,而且数组是平时编码用的最多的结构了,所以,需要对它的一些基本算法引起重视。0 O2 H2 r3 Z/ P9 R6 q
& U& Z% X5 X9 o- T( o
0 o& }2 l: d1 _/ L" B) s
题目名称 来源 个人题解 备注
" x( z- v# g- @- }; C86.两个数组间的距离值 Leetcode题1385:戳我前往 戳我前往 二分法应用4 `) @( |% ~1 {, s4 J( d+ U
87.旋转矩阵 《程序员面试金典》 戳我前往 原地修改
3 W' V! z, i% ]* j4 }* x88.合并区间 Leetcode题56:戳我前往 戳我前往 排序处理数组问题# g' q. b$ N/ }- |0 M
89.跳跃游戏 Leetcode题55:戳我前往 戳我前往 贪心思想运用/ W/ D8 o4 o7 s6 b! r: [, Q4 X0 k
90.盛最多水的容器 Leetcode题11:戳我前往 戳我前往 双指针
- X! g7 p- l% P, T( Q! {2 z; `7 y91.统计「优美子数组」 Leetcode题1248:戳我前往 戳我前往 滑动窗口3 F4 v% X; I8 u' N/ x3 K: b9 Y
92.搜索旋转排序数组 Leetcode题33:戳我前往 戳我前往 二分搜索
# M- ], T5 } \8 Q) C' ^# P$ T93.山脉数组中查找目标值 Leetcode题1095:戳我前往 戳我前往 二分搜索
9 l9 S& H/ s, _# P94.快乐数 Leetcode题202:戳我前往 戳我前往 快慢指针判断成环思路7 G z9 [8 j( \# }6 g8 `
95.跳跃游戏 II Leetcode题45:戳我前往 戳我前往 贪心思想
x9 g! S, v; J0 R( s96.x 的平方根 Leetcode题69:戳我前往 戳我前往 二分法取平方根6 H: l0 f( W+ q" {
97.数组中的逆序对 《剑指offer》题51 戳我前往 归并中的计数(分治)3 {9 g% {6 }& N0 f& j. b# N; h
98.课程表 II Leetcode题210:戳我前往 戳我前往 数组中的拓扑排序
2 h' R( V1 `* L' r分类九:经典算法列举
, w7 `& {3 j9 r7 e最后两个,凑个整,刚好100,是一些比较经典的算法列举。
) [# r" E' K* e v- C) m: h5 O4 @8 m
. U1 }# _7 x2 R1 H7 }题目名称 来源 个人题解 备注
; Y% \ s7 R: U5 B# |99.普利姆算法 经典算法 戳我前往 最小生成树经典算法
" N- j. n1 d- H; ?" H( ?+ m& i100.约瑟夫环 经典算法 戳我前往 很经典的动态问题6 R4 \% B! S7 f- k) D
0x04.End; v' u7 R- {6 T8 X# p C6 Q9 b
希望这100个算法题能对正在看的你有所帮助!
# |# T7 B9 `: b后续还会继续更新更多的内容。% }8 r0 r1 \9 K0 h
您的支持,是我分享的不竭动力!
1 ?, V8 g5 ^ h: F, O% u: F! K2 V. G" r8 c! r5 J, v9 k
: G. V* w! N% a9 G– ATFWUS 2020-05-188 C2 T, e) g6 H" c& D
————————————————) I! d0 F+ T6 z: l0 u& i9 i# ^0 c
版权声明:本文为CSDN博主「ATFWUS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
& V3 Z4 B7 C2 J* J0 ?原文链接:https://blog.csdn.net/ATFWUS/article/details/106193067
: m8 I1 X; a# `" c# G# g; S# D
/ L5 E* G8 s3 t
- V9 T: |9 h( h1 F |
zan
|