找回密码
 注册账号
img_loading
智能检测中
置顶:如何加入2024届新生微信群

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

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

UWCSSA提醒您:

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

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

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

本帖最后由 上岸算法 于 2022-5-5 00:11 编辑 1 l, U# q% x& q  d

  a' ?) C( s* ^1 g$ |【 NO.1 移除指定数字得到的最大结果】
1 k0 b7 c( P) k8 h$ p) i解题思路
; y' R( b) @# \- h
. R9 N3 G% n* ~' b" V- j
可以使用 BigInteger 来比较大小。; e5 E7 g/ L2 b, ^+ |% O3 C
( @0 S- g( \! |+ ~- S, ^- _
代码展示
  P1 M, U  q& H# B; @" I. S
: r2 e4 v( K. a; R1 q! b: D' \+ ^1 c& e: s* o4 x# h% f9 T
$ Q) k# k; }' f3 b
【 NO.2 必须拿起的最小连续卡牌数】3 b3 R* g' z$ T- \
3 m5 Y- x# e2 k! {( b' G. J- ~
解题思路

! s# C& K0 _# b2 j1 [5 r* k1 Y2 X/ J+ v, N2 z/ j
题意即求相距最近的两个等值元素的距离,遍历一次,记录每个值上一次出现的位置即可。
9 b& b" d) c9 g+ J/ N9 F5 R: w$ w5 {6 F& V
代码展示3 P% h/ T) |6 ?, r

7 q5 v! f2 S- B- P- n3 Y5 M
- c2 ^/ @( {  L6 `" w# o4 z, K2 T! D3 t7 N, c8 S! [5 w5 k
【 NO.3 含最多 K 个可整除元素的子数组】0 J. ^! I& ?! B8 Z1 [

: q. J* s: E6 y7 s& B解题思路

0 m0 z; o0 ?4 E! n
" d- N2 v. ?. `( y定义一个 SubSeq 类,实现如下几个方法即可用 HashSet 统计数量。2 @; v% n) ?0 b* k, t

& b4 a7 F+ h3 E" f+ T6 m6 A' XhashCode 计算哈希值' ~$ G# n0 p" `" I! P* C
check 检查是否满足最多有 k 个能被 p 整除的元素% d! s  O' P+ j7 ~9 C- C
equals 检查是否相等
( C" J& |9 W5 u* p4 k4 o
+ }# |+ R5 H3 y: [; R9 f5 {代码展示
% i* L, g" U1 p( R- D. [; k) M. K# Q. }2 c1 T
3 G8 D  R  U9 A! D" M- @: c0 F

% ?9 l( a' {! m9 o【 NO.4 字符串的总引力】$ W- f6 N& q) Q8 \. i- s

" w" B% p4 z* b. x解题思路
8 w# R2 h* f9 R" |. H  f! E
) ]" H  Y4 Y+ ?, b, e& {0 Z( q( z
定义 f 表示以第 i 个字符结尾的子串的引力总和,再定义 pos 表示字符 i 上一次出现的位置。
7 D7 U& e: `4 p) b  }3 j
/ F6 V( T7 L8 ?则有 f = f[i - 1] + (i - 1 - pos[charAt[i - 1]])* P- g6 i' U! c' E8 v

& c% T* j' z% x3 U  Q因为以 i 结尾的子串中,pos[charAt[i - 1]] + 1 到 i 之间的子串都会多出一个字符 charAt[i - 1],而其他的子串的总引力与以 i - 1 结尾的子串的总引力相等。
; }! ?- }: M% J/ d% Y) P  Z1 @$ \+ Z
代码展示
2 V' y+ U, l. d8 y
8 x) v" l  l7 a
6 |. ^8 c6 A+ p; a6 x+ q

本帖子中包含更多资源

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

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

本版积分规则

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