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

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

上岸算法 回复:0 | 查看:1888 | 发表于 2022-5-30 17:23:18 |阅读模式 |复制链接

UWCSSA提醒您:

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

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

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

【 NO.1 重排字符形成目标字符串】
6 _8 i7 {; e6 y. }1 K  q( @5 o
. R  {" a; i0 m% X- c2 U解题思路

* s* ]7 J3 A# K
" n9 Q5 g& O* y" m/ _! Q统计每种字符的数量,原字符串和目标字符串的对应字符数量之比的最小值即答案。
1 b$ h: |/ }; n. B5 X  o  b' P5 ~$ Q
代码展示) `5 }' Z! s0 T8 e! ^9 v
% W' L: _2 g- q4 J
7 ~% W5 N9 N+ ~: ~

2 {4 {& R; u1 k$ m8 e2 i7 F; b【 NO.2 价格减免】
3 Q1 T; `% B6 r# A0 N' J; Z
" Z3 J# r) i$ V: K4 Y解题思路

, E- v0 m: M  A! A9 M
' {& w) D/ l7 v7 {  p( b按照题意要求解析字符串、计算即可。注意一个 corner case: 单一个 $ 也是单词。
& x# q* V- `$ k8 ~8 c
; G8 I" H5 C% A$ Y代码展示
  Q3 t" {/ ^7 N; v5 A$ b5 R
1 F& J* m0 j* a1 O6 `
0 K* w; ]/ }2 f! G% e' ^0 W
" U' Z% H* `& |9 a5 x6 U  k【 NO.3 使数组按非递减顺序排列】/ t& Z; w4 G0 y: [

) d8 h4 w1 N1 N解题思路
& w/ ]  O* O% z6 p: k

8 U$ y6 _& A- A. U! s9 o9 n动态规划 + 单调栈。
0 E+ B4 Z4 a/ I
9 s8 A( V6 V' C/ G2 k: ?; O设 dp 表示将 i 移除需要操作多少次,若 i 最终不会被移除则 dp = inf。
0 |% E2 X" c+ ~: p8 s6 X) ?9 m7 Z9 @
维护一个单调递减的栈,当前元素入栈时,会有一些元素 (假设为 X) 被它弹出。
! b3 j. d* W3 W
) h! r! p9 J0 Z  J若当前元素入栈前所有元素都会被弹出,说明这个元素就是最大的,不会被删除。否则,它最终将会被当时的栈顶删除,而具体会在第几次被删除,取决于 X 需要经过多少轮才被删除,取 max{dp[x]}。0 S: n' `. d/ V$ |
/ [* o1 r, N1 q  q# P& M8 ?
代码展示* F  s* z1 Z0 j' s+ A8 o4 q1 v

" ?' O- L* i- S" _- z) Q) t! s$ g( l: W6 T, A2 ?9 r
+ N# j# h3 e# u  ^7 b2 P# b
【 NO.4 到达角落需要移除障碍物的最小数目】, q+ \6 q; a" r5 b+ ]; O; ~
2 ^$ n" }. C. ^
解题思路
: O. V1 M0 a) o6 k
2 w$ o+ K8 H& ^* B  q. z
最短路。每两个相邻的点之间连边,如果目标点为障碍物,则边权为 1,否则为 0。用 dijkstra 算法求最短路即可。" @, S+ U' b4 I) |' b+ a" O
& E$ Q* R2 R( S2 K0 W
代码展示
$ o5 {+ W, ?+ k- b+ I9 h

本帖子中包含更多资源

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

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

本版积分规则

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