找回密码
 注册账号
置顶:如何加入2024届新生微信群

[吹水聊天] 上岸算法LeetCode Weekly Contest 291解题报告

上岸算法 回复:0 | 查看:1975 | 发表于 2022-5-4 23:06:48 |阅读模式 |复制链接

UWCSSA提醒您:

警惕网络诈骗与盗号,不要在他人发送的网站中输入密码,换汇或付款时请小心诈骗。

为了避免个人信息泄漏,建议在帖子中使用不常用的邮箱,或使用私信发送联系方式(点击对方的头像,然后“发送消息”)。

帖子通过审核只代表内容不违规,CSSA 不会验证内容的真实性。请谨防诈骗。

本帖最后由 上岸算法 于 2022-5-5 00:11 编辑
. u3 C9 k' T0 B0 U$ J! J7 o
) O/ X: \2 ~2 o. y2 M7 |# o【 NO.1 移除指定数字得到的最大结果】
% {6 c! Z+ H& p. b' ]解题思路
4 y! F# Z, b- |+ M3 k
1 x# x, p+ m6 T; m& J
可以使用 BigInteger 来比较大小。
0 Y& r1 D9 |! U2 ~; q. N
) h( q& u! b7 a; n" X5 I: g2 J代码展示
6 n* P! f/ J: J& {$ l6 O" L* e5 O: A  B+ g5 q5 R4 J
- V- G1 A6 c+ n3 A+ b

& e( \9 ^0 Q& f: ]) X【 NO.2 必须拿起的最小连续卡牌数】3 b' |; K$ j3 T! b
  l1 Q! N; n7 Z! X- T
解题思路
; h; R: [& {  j/ Z: ~
1 O5 q$ q' }& A# B1 Z2 d1 ^' h
题意即求相距最近的两个等值元素的距离,遍历一次,记录每个值上一次出现的位置即可。; G( K% Y+ F- r2 ~& t  j+ x6 s

) m8 p4 D% W* Y代码展示8 R) m3 Q2 n8 I

( A1 P+ n7 m: k' p+ [( L
: ~6 S+ A# J+ g0 Q
/ f$ h8 G( [. ^. e$ l+ F& W2 V3 R& R【 NO.3 含最多 K 个可整除元素的子数组】5 K* K: H9 v) l) ~; i9 q; H
+ L9 M4 e4 ?  ^% l7 u
解题思路
8 ?. h* c3 t! I  n, }" q

4 S. A$ ^3 l6 N! r3 a0 X定义一个 SubSeq 类,实现如下几个方法即可用 HashSet 统计数量。
8 I$ w# h8 }+ G2 w' z5 f$ T! [8 h0 `: i$ x  Z0 U
hashCode 计算哈希值5 |4 E2 W$ I2 q
check 检查是否满足最多有 k 个能被 p 整除的元素" H+ O* V: o+ [' S4 c
equals 检查是否相等
$ L* _$ d3 Y" U% p: X2 A* H. C7 p8 g! i
代码展示# Z8 ]0 S! w/ w; X# V) h, g

& p; c2 N  t) q5 R$ c+ S- ^; e4 x4 `# l8 O9 U: _- Z5 j% Q4 J  q7 ]6 I1 c
+ L% V0 c3 O7 C. I
【 NO.4 字符串的总引力】
+ C' M: ^+ p9 ^" C3 t0 w
  Y/ W9 ^& W* Q; r( D; H解题思路

$ g' e7 K- e$ `" q" Z( }/ X% r# f# t' U" o9 m* E8 ]
定义 f 表示以第 i 个字符结尾的子串的引力总和,再定义 pos 表示字符 i 上一次出现的位置。
, x8 ]; \) }3 k' J3 U/ N1 h2 F3 O# {! k0 l0 d
则有 f = f[i - 1] + (i - 1 - pos[charAt[i - 1]])- @# k9 G2 ^: `: p. V8 c
; [% v' @: W# U) t
因为以 i 结尾的子串中,pos[charAt[i - 1]] + 1 到 i 之间的子串都会多出一个字符 charAt[i - 1],而其他的子串的总引力与以 i - 1 结尾的子串的总引力相等。. H( l) ~" ^$ K' B4 {

- T7 v8 a- R& {6 w$ G. H: V代码展示

& d& B, v. M% @8 n" }! _& B- W" `

; A. `, U& J) L1 _! W! ?5 q

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册账号

x
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

登录 发布 快速回复 返回顶部 返回列表