【 NO.1 字母在字符串中的百分比】, I4 M1 H, c9 s0 H
& I; ^7 O* \$ W7 f0 S4 Q解题思路* W8 m7 x% x3 b) v3 f1 ^% w
" M: a4 c, H, R# S签到题,循环统计即可。
" q+ a3 f) _( F( A# n
5 \0 T5 y: g) P3 U代码展示
# B9 m& b" {; |* X" K& _- Q( ~' O5 [! r3 Q- Y' M1 T* {# y, U. }/ ~
. v* h, k( u. O【 NO.2 装满石头的背包的最大数量】( N: ], j8 x- e! s
4 K6 Z2 Y: D, |6 {* l3 S( f解题思路; p& ~- f# n) p9 U3 V1 h
' O% s; \/ d% C# e- f7 l贪心,先装容易装满的。
# [4 D2 Y6 X9 o# [& V9 Q2 ^6 j3 {$ e: l. z$ p1 E
代码展示
6 c7 A' C' }4 ^6 V8 c
1 T5 ^# C7 P3 k% j" O6 Q! g0 L5 Z, I; {$ L" Y$ f3 ~
【 NO.3 表示一个折线图的最少线段数】
& ?) b' C* O V+ F a2 [
. ^' S5 p0 | [% p解题思路4 @5 Y% E" `6 Q& K1 K
% b/ |8 G) _2 f; d横坐标之差除以纵坐标之差即斜率,相邻两对点之间如果斜率相同,那么就可以用一条折线表示。
* i+ ^# A. r* j# }* c# Z) L# x) p5 \4 E; f
代码展示" X: V; c: B( r' s2 \
% @ P% z# C+ ]+ G0 q3 f7 _5 S1 f% k% ~9 W+ t/ X
【 NO.4 巫师的总力量和】
5 v7 O d* r+ X4 h h& ^2 y/ n. x) \
解题思路
. @$ s, U0 f' t$ _8 |$ A. _0 o2 L2 [* r: x
前缀和 + TreeSet. 依次求出每个巫师作为最弱巫师时贡献的乘积。
$ g8 ^$ ~/ ? u/ i) a
; f5 x) m3 U! T: a0 n8 X9 i当一个巫师作为最弱巫师时,他能贡献的乘积就是左右两侧比他更弱的巫师之间的这段数组的所有包含他自己的子数组。2 n" ]/ b( U# c! M6 G% [
, S+ Z) G) `% k/ k9 s, o
可以利用 TreeSet 快速找到一个巫师左右两侧距离他最近的比他弱的巫师;然后利用前缀和求出所有这些子数组的和。
7 B2 V1 c* h5 B1 N# X* r2 k! j" u" M. {
代码展示
s8 n/ k0 E7 R# ]2 |9 z$ K, y; x+ @! X+ r6 i+ \3 `9 d
/ F J) t3 K; p! | M9 S |