- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563425 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174250
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
% X. G5 s Y1 I1 ?; B3 ]) E2020最新-精选基础算法100题(面试必备)
9 V/ |2 `4 M. I9 d! z5 z" ?1 d# S* V1 t& G* f; k
0x01.概述, D" k/ z( N" \
作为一个程序员,算法能力必不可少,虽然不一定是算法工程师,但是算法还是彰显着个人的编码能力,面试中也经常会被问到,甚至会被要求临场做算法题,所以,还是好好积累吧。' C, W2 O4 B8 N
6 R1 B7 Q/ i$ c, U0 `9 z5 b# w# w1 D# E! {! q
个人其实对算法挺有兴趣的,从3月份开始,陆陆续续刷了一些算法题,把一些有意义的记录下来了,也顺便写了一些题解,个人认为,还是挺有收获的。
3 Q% ^0 R1 F" s! i2 v之前写了一篇算法文章的目录,不过后来就忘了实时去更新了,于是现在,想把之前做过的一些有意义的算法题分享出来,刚好整理了100篇比较有意义的。希望对大家有所帮助。6 @4 r/ ?' u% P" b. \
. @5 _& O& y3 ^; H4 W9 J# O( F
0 n( R# f8 E3 l6 d E9 B
6 F" Z% D( D$ P s: X
/ z1 W$ x" b/ b% `# G0x02.说明0 h, T; [+ Q# ]
关于语言的选择:
& u( w! s% T d# D* P8 f6 L" j7 A0 }6 o, e; Y
% s+ d" U5 R" v a. e
前半段主要用C++写的,后半段主要用Java写的。
. K2 B; [/ [9 q- a/ I! f; Q其实什么语言没有太大区别,主要是思想,用着顺手就行。
) d7 m- D: R% g) H9 e7 d% h* `这里安利一波Java,哈哈,Java写算法题写多了,真的比较舒适。
" a$ h* v7 u" }* ~关于文章类型的选择:: u$ [* M6 v! n) M
# ?3 z( O" H P9 ?" I9 r
2 A( a3 {5 c z* ^选取了一些较为基本的算法类型,都是比较常见的。& G& S+ Z, I5 k+ F% s
不涉及ACM等难度太高的题,大佬们移步哈。! `+ t1 A! W( }, N9 ^' D5 o) L
都是一些比较经典的问题。, x: k- d( d* z1 i; m6 Y7 c: _
关于题目的来源:
1 C- G7 }1 g" T) ]* T+ k {3 F8 L0 C5 b" W7 o
- V. l+ ^' a1 S: {
平时主要刷题的平台是Leetcode,因为是函数式的,比较方便。
5 m5 e0 }* ^! ]7 Z还有一些是在《剑指offer》,《程序员面试金典》中看到比较好的,所有题目后面都给出了出处。
4 T! i1 y8 F% E0 l* R, x9 A: B关于题解的说明:( l$ }! E' t- C# B& x6 [
/ W: T- [3 T. W7 G6 B* [$ Q8 y, M
题解是我自己所写,有时候也参考了一些官方题解的思想,可能更好理解。
0 b4 Z- H$ _9 [# U5 F3 M题解的代码都提交测试过的,保证暂时没有问题。- b# X: n1 r3 H, R7 I1 R
个人水平有限,可能文章里面存在一些问题,还望大佬多多指点。
# ~0 T$ \; L$ D. n每个题目附带了原文链接,不喜欢阅读我题解的小伙伴们也可以直接移步原出处哈。
% v% Z$ o3 L- B# S6 ^- |# n关于算法能力提升的一些意见:
/ {8 ^1 {4 ?7 L. V! F9 c2 _) L0 T& D9 P0 s. R% L' T- \8 o
& J2 k7 _0 ^1 S. o- R
个人认为,算法来说,思想最为重要,有算法的严谨思想,才是算法能力提升的基础。" f/ ~# s4 t0 ~3 e
刷题就是培养算法思想的一种实际行动。% n& v B% F7 F3 C: k
好好理解透一个问题,或者一类问题,远胜于你麻木的刷大量的题。) l1 H, ~$ @- P3 I: _2 D. _ U, e
算法确实也有模板题,只需要照着模板就能做出,但问题是,照着模板就一定能做出来嘛,是否真正理解了为什么这个模板可以通用。
1 u. n/ i0 M% I, d关于分类:
5 u# u% K2 w- X: ?
" F+ i( y* h' ^& j: r6 y: v. C0 n! m1 \
有些分类确实不太好分,所以就单独列出来了。
8 ~6 t) R/ a4 ]- _! a5 Y g主要的还是区分开来了。( Z' m- O0 S' g# v4 U7 F
0x03.正文–精选算法100题(附个人题解)
/ K, O k" {( R7 ?6 W0 K3 g% V分类一:动态规划(dp)
: d" D9 O* i4 ]2 Q, j9 S没错,就是你熟悉的dp,dp说简单也简单,说难也实在是太难了,重点是如何找到里面的状态转移方程。经过这些题目的训练,希望你能有一些初步的dp思路了。8 i# g; y$ \. @1 \
' o. N0 `5 v8 x% } U( _4 h
2 j/ r7 M: `" }6 w0 J$ e
题目名称 来源 个人题解 备注
O: l) H6 f' S01.打家劫舍 Leetcode题198:戳我前往 戳我前往 估计是最好的dp入门题型了
, G8 h+ e/ z. ]0 [02.斐波拉契数列 经典问题 戳我前往 确实比较经典哦~
' R0 S; T+ Q9 L6 g! ^03.零钱兑换问题 Leetcode题322:戳我前往 戳我前往 也是一个比较经典的问题了
3 P5 \6 G) q: V2 C2 B0 j04.零钱兑换II Leetcode题518:戳我前往 戳我前往 零钱问题通用解法- V5 N" g% ], V9 o! @2 B: K
05.最长上升子序列 Leetcode题300:戳我前往 戳我前往 堪称数组dp中的典范 L( N3 [4 x @4 n
06.牌型种数 蓝桥杯:链接暂无 戳我前往 二维动态规划,要仔细想想# C, u2 g2 O/ t* a
07.最低票价 Leetcode题983:戳我前往 戳我前往 如何状态转移?( f2 D* T5 N! l
08.不同的二叉搜索树 Leetcode题152:戳我前往 戳我前往 你会发现dp的神奇之处
8 C: _, D& s) [) N09.礼物的最大价值 《剑指offer》题47 戳我前往 优化dp的思路
9 o+ n; K# X1 C10.接雨水 Leetcode题42:戳我前往 戳我前往 需要仔细思考以发现dp! g# d7 g# \3 v2 R# t4 P
11.编辑距离 Leetcode题72:戳我前往 戳我前往 最为经典的二维dp题型; N# C) l# I" ]
12.买卖股票的最佳时机(6题) Leetcode6题:戳我前往 戳我前往 统一化的dp思维,棒
% W5 X: ~$ `0 H1 L/ q! g13.鸡蛋掉落 Leetcode题887:戳我前往 戳我前往 有些难度哦~
m% M: P: [1 _! w$ g$ U14.最大正方形 Leetcode题221:戳我前往 戳我前往 矩阵中的dp思路
! z/ N4 A% O, @( X" F m$ O15.和为K的子数组 Leetcode题560:戳我前往 戳我前往 前缀和也是dp的思路( G. y3 t" B) B) l
分类二:搜索类(DFS,BFS,回溯,暴力搜索)( v& O8 ~; D& }# N8 ~8 q& ~
搜索类的算法题应该是随便哪个算法比赛都可以看到,虽然经典,但在这上面还是会有比较难的问题,所以,掌握基本思路和套路就显得格外重要。
' A: y& r$ l; [0 ~
8 S" s: w" [% W
7 e/ {/ w. z: l/ M* L, p6 e }4 q题目名称 来源 个人题解 备注6 p& j$ v# u4 ~. v
16.图的深搜和广搜 经典问题 戳我前往 搜索中的经典问题
2 x" @2 _! h. Y! k: j8 B5 X17.方格填数 蓝桥杯:链接暂无 戳我前往 揣摩一下DFS的思路
# V" j% Q, a0 y* P3 i18.路径之谜 蓝桥杯:链接暂无 戳我前往 经典改编迷宫问题
/ e) B. q6 E3 C* H; J5 F19.岛屿的最大面积 Leetcode题695:戳我前往 戳我前往 最常见的矩阵中的DFS- P9 }" O0 V3 J1 I" W6 P0 R& C# o
20.逃离大迷宫 Leetcode题1036:戳我前往 戳我前往 各种搜索思想都可以应用0 S4 D/ J6 E/ t
21.单词搜索 Leetcode题79:戳我前往 戳我前往 字符串中的搜索- z/ G6 ?7 c D, _* l/ U
22.检查网格中是否存在有效路径 Leetcode题1391:戳我前往 戳我前往 思考另类的搜索
' A4 Q: [" t- {23.地图分析 Leetcode题1162:戳我前往 戳我前往 多源BFS' h" A l# e4 \. `* N( C
24.机器人的运动范围 《剑指offer》13题 戳我前往 DFS进行计数的基本思路3 `, D' ^5 J3 t1 a
25.括号生成 Leetcode题22:戳我前往 戳我前往 用DFS生产括号2 l4 E/ a9 V$ U
26.01 矩阵 Leetcode题542:戳我前往 戳我前往 矩阵中的搜索" |3 g3 w$ a" N
27.岛屿数量 Leetcode题200:戳我前往 戳我前往 根据需求使用DFS
. J% d+ h/ `: f. k. n28.全排列问题 Leetcode题46:戳我前往 戳我前往 最经典的回溯算法, \9 A" T6 b3 M% y% G1 [
分类三:字符串
& v+ t4 ~2 i; Y# }+ Z6 p( Y8 {别忽视字符串的算法问题,它难起来可以非常难,简单的也很简单,面试喜欢提问,而且特别容易出错,需要引起重视。
! e( ]; f( T6 c# |% J9 c/ o l% ?8 j j: ]4 D% [3 F. g2 W) G
8 {7 R- v7 v* w. Y% ]题目名称 来源 个人题解 备注% b8 l3 p' b4 p- J5 G$ V
29.KMP算法 经典算法 戳我前往 经典字符串匹配算法( U4 R. I% Q/ W: q1 [, g1 ~
30.拼写单词 Leetcode题1160:戳我前往 戳我前往 很简单的字符串问题
+ M6 P* U0 ~! S- w7 l31.竖直打印单词 Leetcode题1324:戳我前往 戳我前往 简单但值得思考* c0 J: W) Y7 J( s. \
32.不含 AAA 或 BBB 的字符串 Leetcode题984:戳我前往 戳我前往 巧妙构造出字符串
. u# f6 o; X4 o33.实现Trie(前缀树) Leetcode题208:戳我前往 戳我前往 字符串中经典的算法3 g1 M8 T: d) H. _5 X1 v* v& o
34.最长快乐前缀 Leetcode题1392:戳我前往 戳我前往 如何处理字符串的前后缀
/ \4 `) [! k1 { U, b35.单词搜索II Leetcode题212:戳我前往 戳我前往 前缀树的应用
$ L5 y3 G- M6 u. l1 o36.单词的压缩编码 Leetcode题820:戳我前往 戳我前往 前缀树灵活运用
) `& R* v. T# q- t R: L37.判定字符是否唯一 《程序员面试金典》01.02 戳我前往 简单但值得思考% a7 C. W$ }9 \; p1 \6 @
38.判定是否互为字符重排 《程序员面试金典》 01.02 戳我前往 简单的面试题
/ j# I8 }$ o- s% h2 \3 N39.无重复字符的最长子串 Leetcode题3:戳我前往 戳我前往 字符串中的滑动窗口
" p2 j! d$ f! z" k, p( v40.字符串转换整数 Leetcode题8:戳我前往 戳我前往 需要考虑的细节很多
5 G* E) A+ m) n9 q5 j8 b0 Z41.翻转字符串里的单词 Leetcode题151:戳我前往 戳我前往 正则匹配8 B: m: Y" Z( i; S' N+ V$ P- I- B
42.整数转换英文表示 Leetcode题273:戳我前往 戳我前往 非常实用的算法题4 B+ {7 A; b# J b5 |, ]$ p3 N
43.统计重复个数 Leetcode题466:戳我前往 戳我前往 循环结剪枝
; ]6 o7 n( Y# d' U2 [2 T. {44.超级回文数 Leetcode题906:戳我前往 戳我前往 字符串与大数的处理思路
4 P; X0 Y& i" l4 }; \45.单词子集 Leetcode题96:戳我前往 戳我前往 特征思想的应用) q+ T" H/ o- B. f
分类四:容器类(哈希表,栈,队列,Map,Set)" Z. i7 ]. u0 w4 C- Z7 y
容器类的算法题一般需要根据一些容器的特点来解决响应的问题,还有需要选择合适的容器进行新的数据结构的设计,掌握它们的使用,非常重要。
% D r! r% f2 |3 W- _6 q/ n# j0 M7 v/ O2 V" b2 b% h
! k' t9 q$ g$ y( t1 U, w$ R9 ?
题目名称 来源 个人题解 备注
) _' J- D3 O- P& ]' s# ~46.按位与为零的三元组 Leetcode题82:戳我前往 戳我前往 哈希表优化. C; G- l5 U. r, a. i/ I
47.设计地铁系统 Leetcode题1396:戳我前往 戳我前往 合理选择容器
4 S. z- `0 g' }) v, s/ O0 }6 C48.LFU缓存 《程序员面试金典》 戳我前往 选择容器来设计
# L7 ?* u* ?5 b49.设计推特 Leetcode题355:戳我前往 戳我前往 很实用的算法
3 V$ o4 C* I. K2 H50.最小栈 Leetcode题155:戳我前往 戳我前往 两栈设计最小栈8 p( Z1 R/ |7 g: }
51.子数组的最小值之和 Leetcode题907:戳我前往 戳我前往 单调栈的应用
/ P! p) C$ |1 m3 `+ k52.栈的压入、弹出序列 《剑指offer》 戳我前往 栈的合法序列
# a6 m9 e$ F& q# X53.有效括号的嵌套深度 Leetcode题1111:戳我前往 戳我前往 模仿栈/ q! y/ Q+ i: q3 q
54.逆波兰算法 经典算法 戳我前往 后缀表达式关键算法- H- l! Y& r, M. O. D/ U
分类五:数学思维类(含位运算思想)$ i" B; I: J. W" L3 c" O
数学思维类的题由于需要很强大的数学思维,但是这又不是一天可以练成的,所以,也常常在面试中会被问到,只有慢慢的积累,才是王道。# ?4 A A5 z2 ^
1 |* M# M$ n9 t0 J9 r N1 {: d) m) o( h2 Y8 I+ a* j D# X n
题目名称 来源 个人题解 备注
" D( r" B( R7 K. B( l N; w8 V55.水壶问题 Leetcode题365:戳我前往 戳我前往 经典数学问题
. T0 E) P2 f& u2 d7 C: J56.三维形体的表面积 Leetcode题892:戳我前往 戳我前往 空间思想解决算法问题
+ y7 O# c" f4 z3 z- _- v& a57.生命游戏 Leetcode题289:戳我前往 戳我前往 数学思维的运用
" m( _$ {4 a }; a2 \58.交点 《程序员面试金典》16.03 戳我前往 二维平面的交点问题# L8 P) O$ z% V2 g$ A( B+ ?$ f: P
59.使数组唯一的最小增量 Leetcode题945:戳我前往 戳我前往 数学思维的运用! V3 s9 b1 O( M. K8 b. ^, I
60.数值的整数次方 《剑指offer》题16 戳我前往 非常容易出错的面试题# ^+ Z3 Q% k8 @- n/ j! ?, K
61.求 1+2+…+n 《剑指offer》 戳我前往 短路原则
/ n/ i) f5 _, [ y62.1~n整数中1出现的次数 《剑指offer》 戳我前往 数学思维找规律
' X9 q H& u; h' E- ^/ a63.数组中数字出现的次数 《剑指offer》 戳我前往 分组异或
% [1 v* w5 x# `6 Q- W分类六:链表
: c: w9 t/ V& i. k( h链表是一种非常常见的数据结构,不管在实际应用还是算法竞赛中,都经常出现,掌握对它们的基本处理,非常重要。2 R0 U6 ]8 z6 D5 c! g) s6 f
- R4 Q" d3 n- S8 Z8 z+ D2 _3 N& L G
8 d8 i) d5 C6 ^$ W2 N% z
题目名称 来源 个人题解 备注4 f" c8 K; |/ `5 T& I8 W5 }' K7 H
64.两数相加 Leetcode题2:戳我前往 戳我前往 链表的加法问题
; D: b0 f6 S9 e8 o65.链表的中间结点 Leetcode题876:戳我前往 戳我前往 快慢指针思想- X! f9 s" T) e& Z" x4 c
66.删除链表的倒数第N个节点 Leetcode题19:戳我前往 戳我前往 哑节点和双指针
& Y6 ]9 @0 F% S: S+ j67.合并两个有序链表 Leetcode题21:戳我前往 戳我前往 链表的递归处理* k2 v# I: K+ k5 x: ~3 E: m
68.合并K个排序链表 Leetcode题23:戳我前往 戳我前往 优先队列的使用
' I0 L4 U! d! c& f/ {! \69.删除排序链表中的重复元素 II Leetcode题82:戳我前往 戳我前往 链表基础指针操作
" X& L* h- J8 g8 p+ b# ]70.分隔链表 Leetcode题86:戳我前往 戳我前往 双指针操作9 D7 |8 B# }8 b% v) ^
71.旋转链表 Leetcode题61:戳我前往 戳我前往 巧转循环链表" }9 A. O6 E0 }
72.两两交换链表中的节点 Leetcode题24:戳我前往 戳我前往 递归解决; N: x) T8 ~: G: }( T( C
73.反转链表 Leetcode题206:戳我前往 戳我前往 多种思路反转链表. r3 T) N2 T e% G
74.K 个一组翻转链表 Leetcode题25:戳我前往 戳我前往 分组逆转
1 ], t% `( @& E4 T0 ?75.判断链表是否有环 《剑指offer》 戳我前往 多种思路判断链表是否有环% B! r2 {2 b* N- T6 q% h/ {8 Q
76.单链表的插入排序 Leetcode题147:戳我前往 戳我前往 链表的插入排序7 W$ K% C" I% ^ b
77.两数相加 II Leetcode题445:戳我前往 戳我前往 用栈翻转链表元素! ~- f/ e! R6 I7 O; M$ \
分类七:树
8 c# _" W8 m& `0 |/ X树也是一种非常重要的数据结构,因为很多容器的底层都设计到树,所以树也成了面试常问的重点了,你需要对他们的一些基本算法题,非常熟练。2 M$ m# ~. f( b. m( I
. e8 v& _, H0 o0 I0 E, }
$ Q: ?3 T6 G W8 R( _' X# {+ a题目名称 来源 个人题解 备注7 r/ W, X- V4 j2 R
78.删除给定值的叶子结点 Leetcode题1325:戳我前往 戳我前往 树的简单删除问题: c0 O- V, f* r# T# m2 r8 h: W
79.二叉树的最大最小深度 Leetcode题104:戳我前往 戳我前往 二叉树的深度问题
/ `* ^6 k8 [/ `80.将有序数组转换为二叉搜索树 Leetcode题108:戳我前往 戳我前往 数组和二叉树的转换) D& W% u2 `2 b
81.二叉树的右视图 Leetcode题199:戳我前往 戳我前往 二叉树的视图转换( i, g4 ^! ~, I ]+ N) S
82.另一个树的子树 Leetcode题572:戳我前往 戳我前往 两树关系的判断
- B* ^ O5 j2 _! T. y! \) L+ k8 X83.二叉树的最近公共祖先 《剑指offer》 戳我前往 公共祖先问题7 `2 r. W% T1 h2 q! i
84.二叉树的层序遍历序列存储 Leetcode题102:戳我前往 戳我前往 二叉树遍历序列的存储7 l2 {8 Q* c0 g9 |7 k
85.验证二叉搜索树 Leetcode题98:戳我前往 戳我前往 二叉搜索树的验证7 _1 N: M+ `6 S) |3 ~8 F. ~
分类八:数组(贪心,二分)
3 [0 g4 U3 S( { Y& p0 c; J, E0 d数组类的算法题也是,说难不难,说简单不简单,而且数组是平时编码用的最多的结构了,所以,需要对它的一些基本算法引起重视。
a0 h o# a. _; q3 p9 S
4 n1 s- `% b$ n& R3 T# a) d6 Q7 _) {
题目名称 来源 个人题解 备注3 `. `4 } B* h4 ]# h
86.两个数组间的距离值 Leetcode题1385:戳我前往 戳我前往 二分法应用
' L2 C/ ?: T9 f# P87.旋转矩阵 《程序员面试金典》 戳我前往 原地修改 r2 ~5 w5 E/ o# z, O
88.合并区间 Leetcode题56:戳我前往 戳我前往 排序处理数组问题3 v; W5 A: U1 ]0 w! \1 k0 Z# J
89.跳跃游戏 Leetcode题55:戳我前往 戳我前往 贪心思想运用' e1 [2 n* @- P
90.盛最多水的容器 Leetcode题11:戳我前往 戳我前往 双指针
* S) l% v m, k: l91.统计「优美子数组」 Leetcode题1248:戳我前往 戳我前往 滑动窗口6 j. m7 x6 P# n3 m( J) ?, ?, W
92.搜索旋转排序数组 Leetcode题33:戳我前往 戳我前往 二分搜索) _' ?$ \0 F. I* G3 h, A B
93.山脉数组中查找目标值 Leetcode题1095:戳我前往 戳我前往 二分搜索
9 y" G0 [$ L" Q" s- b$ w3 ~; E5 R5 K94.快乐数 Leetcode题202:戳我前往 戳我前往 快慢指针判断成环思路* h/ n, Q6 E8 e( l* v+ Z* w) w
95.跳跃游戏 II Leetcode题45:戳我前往 戳我前往 贪心思想
4 Q: q& _/ f% q. n" ]/ A96.x 的平方根 Leetcode题69:戳我前往 戳我前往 二分法取平方根
, l2 h# H( l$ z1 C8 X97.数组中的逆序对 《剑指offer》题51 戳我前往 归并中的计数(分治)
; E7 R1 k8 L: }- n98.课程表 II Leetcode题210:戳我前往 戳我前往 数组中的拓扑排序
$ Y* t( W4 d0 ]; i) F& s" D& K2 e分类九:经典算法列举9 S, f6 S: r5 E% ~/ b
最后两个,凑个整,刚好100,是一些比较经典的算法列举。7 E2 {9 F- O4 `2 u% @
9 O9 P. x9 ?8 H# b5 Y0 s8 @! |, ]3 u, m+ ?
题目名称 来源 个人题解 备注& z7 L! a% C) |2 p8 S
99.普利姆算法 经典算法 戳我前往 最小生成树经典算法$ e( }1 E" R4 T, f0 b+ V3 f
100.约瑟夫环 经典算法 戳我前往 很经典的动态问题
% h X& R( u1 N H+ J0x04.End
! M0 [+ Q5 i/ |0 s, `+ X希望这100个算法题能对正在看的你有所帮助!" P/ F2 N/ l8 V8 S+ c
后续还会继续更新更多的内容。$ W1 v1 I# ?9 Y# p i# ]" d9 K) y
您的支持,是我分享的不竭动力!1 `! p% _9 A4 e* R7 g+ z
- s) {9 \$ O( ?. M
z3 s% P/ h, D$ _3 b– ATFWUS 2020-05-182 ^ D: Y% u; F7 A
————————————————: s0 g% I) x9 y6 v7 W+ B) e
版权声明:本文为CSDN博主「ATFWUS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
2 w, ?/ N8 {% I$ [原文链接:https://blog.csdn.net/ATFWUS/article/details/106193067
9 S, ~$ {% F5 O. u) U9 Z% C
5 S4 g( I$ f3 a3 d! M7 ^) V
0 V4 P8 U% [- Q* |0 R |
zan
|