From 060d7756eb7cfe36d0c63e702297348735cdd4f7 Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Thu, 10 Jul 2025 09:06:05 +0800 Subject: [PATCH] Add solution and test-cases for problem 3440 --- .../1.png | Bin 0 -> 9942 bytes .../2.png | Bin 0 -> 13600 bytes .../3.png | Bin 0 -> 14209 bytes .../README.md | 69 ++++++++++++++---- .../Solution.go | 43 ++++++++++- .../Solution_test.go | 23 +++--- 6 files changed, 109 insertions(+), 26 deletions(-) create mode 100644 leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/1.png create mode 100644 leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/2.png create mode 100644 leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/3.png diff --git a/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/1.png b/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/1.png new file mode 100644 index 0000000000000000000000000000000000000000..fbf27c6b37cb9b7d2abc215a3cee06c1c6e7c376 GIT binary patch literal 9942 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 literal 0 HcmV?d00001 diff --git a/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/2.png b/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/2.png new file mode 100644 index 0000000000000000000000000000000000000000..9c09fe34af53026bc06ffd6f6dd77ca5ad6880e6 GIT binary patch literal 13600 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 literal 0 HcmV?d00001 diff --git a/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/3.png b/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/3.png new file mode 100644 index 0000000000000000000000000000000000000000..c973d379f3e837b491e70c53dec31819d48771cf GIT binary patch literal 14209 zcmeHO3p`Y58$UDApqsMGrxMkQE^af-kQ7R~QYk9eF*lPjGtGr@AKPv!p|hK zg3?c`2Ajm+M=dhUwM=-|W0oic% zij8a6=wp|Hdj{Q~0xpgel0OT6WvL&B6#yv9&2VPMplj)vE<`GkLs#emo?{?|!=GgRrgoqY_!qYnSwDDS62aI~xvT>s zFhX9ZlaW`=8SDI3Z)1>xIW8<0zm@i;E-T;dP2OjKz>z~_`>kb>DGbmtS%6H))IvG| zKna#nEG!7JNzyp-agbqQf(t!Fz7*s=8lO(4aFO0*Z}M0y29M4jP9(9IObQ86BGMy~ z!+|v?T_8fDvKYwf5CR)4d>98zaCuLpFx8Dt=K0BZEwRWdVEPIQo#rPW*$i(bn`Hn| z&Wx;t>qi7YlD#h_DQZO~N4YdPEEecbL1~K3a;5;mQVIhWwp@>B8Qud#3sI7g>+#b7v)=lI#Pf!@;Jdjs7Q}E0wM+k zzE~Xc9P}0p=9UP}PZ0=sgh)gHNPE*aJnMf)Nq`5@@yF*6JGytEfVhUhkI0|GB-_FE z0pv+y5V>4BX}HLT>qjP73i&-_`QIh2AW6BiP!yz`#-T8XJbK`8WBrhDKQ1gqOM(Tr zjztHq|Bb%QO%b&r`o_Whu)^dcaanv0iGsZK?`iUPhO{*QogsNd4voV5FNVZ{hyx(> z2Gt*z48ko%((iG;2RL)Y7(W8I;eh%bg9jm;Avbq@ERJkJu_VL6cDN$|EtXhc93DSX z-oOfR?s9J+w|oT*n%jl@KgD#BBy(68|D*5$ z+}3Euhq>u+*N!uL-+z2^_^=#7{{cM0sK$pp4}CW={FMC%0^t$yAE4wI)%dV_CyW0a z{D&Db=Me!2C=o_8KrG~$gxrCA763ttnGpd9C{#u@K;GGE`YbY3GmsX%SHiqgJb+zF zuv`1DN&&^1g3Fd|;Zo@WcxTZ5om~J^=?|cfNWox*6wYt#6?s+&_;UZLSTM+Ge@ek% z_MweGnNj`!D@stkj%Its%QgK5AfG|SVD_Pnx<3japnM(G0QnqC2D1-s7yeNI0rl&s z2FPbwGmPY>CGe=D86bquvSt|3UCU9vtxb5hX!tCu$`9>ZzEd;|KOy+fP7A4)B+7@6 zqI`f}ZTLdS*DgZO{(36T6q|Lw(xY$QfTJ`PL zyJ5!p8A%trf)*F!+7g#^iCZckJ?akl)j=p)IF7M#Q|@V8l*14+@kK@;`hdoxj$&x= z&T}f&UP(n=&sOiO5Smyu{lsKFTcL=jtn`W(>Q9AR)HmBg7-rmkn8~LAjTRIXTHw&2 zMP-4Wa16nb4l|j0qEL&()rYlFphZbjT@-aB)f{H}Axj7)FOgrY=fv?ZJSy_D&}m+GPi&6$Vb z8QS`wP}B3RR!Nx})Knx5ofWtLTE?fNjli-)g+nhqQzIg7MtcVhEx&0>s#qr}EY?x; z?&#=?kIr5nWj)_?6{Kt3aXv9|lXGiCyNGL3_@KW!ZK9+pLSX#z=bE9Wu6d~G7i_M6 zTaF4F$aLIOLrbrg6h;o7+cRAhIn)pzw5_qQur<-7xZ+7@Y{&9cil*i*`XvO^2{0xvAkQWsHn@}bC~gyMOj2Xv}>btAjO^@Vw=9^R;Nl7QOG8&tGl z?Np0F+qtM-2 zY(5Qz@)$c$c&mRyo~8(G$hRS@s3bnQj}xp{M#mc zf7Ak@%fnR_mZ+mwDeMw7I)D5|D52*B(@3byZrplfs)6u){`i(HwopQpngm;1mZ^Le za`K$N<(U#&GvOaLzy`7F{#wLen)q+wgqa`-stM0q82EBCzxKI*d2z{5dSzRpxIA-7 zer||FYtqJt5nYvKhcVh+jgM)kQ!z=?o}W+ao{1Lh@$^i#QkCR*0doSl#Eg?XyB6=( zRmCm2Uyu~ma%0<2eCLUZ!e;=f+UJ0EoaY|`_Ryvwa__V0D03-)dL{a_O=#yAc9W)v zIu5qR5~}laN;T4lrqr$43}rJO{(X!R`%rS`EhYE@Rads&Uu}|E)Khn)@%sMRM}`=L zT^LnK@6Eg-v{%QeY+=*)!L!Ef4gOpUDW^Et%LJZBIbnEdDC3urul*ix@3*9>}@LOBcvo`6a}c2p{5V; z2L{Wv^htMqoG7W!w)Tz)D4UX~R<8yWh_CeLT^9OwTFCB<> zbO?y-&Ym#JG^)O5ZQx?~GYF1^fY zj4>%%F|SGwj9TPA_=6bDFDDHH7qIJ8(O1P_un@{Gyyp6YmLAMIF(Zz1A|x zbTSw)!%UjdU(9hzTC_#X zf9R<-C{8gWJuEJNF=?vEJ92=}mx!Vo+Z!ItoK)J}J8S1PgXFLcV$Ln2@@UbDsXkp_UnIrd~0`91QHn=Q^nDZ`pn#R1{PCjMC?*R9xx*xN_Q)EKj$f zCA*4>k1GxNpe{2Ec5{Sr5giv8n7AoFIWKy>tfM|P-YdUxK(b>JzV)lJ>=kY+#eB<7 zR9fKy{7$hB!5$)DE>R-~8c$~%9~~d(S+h`y{ou(QcGC=k!Grz%hX;PNs@{8XDA2jP z(y2L#;MUkAaPvP4F#{!3R7C&lYs87A&A5|Cm<1<8`kM2uh!;1H^(Z8n2Wiauc7?`_ zI}<&Iwyrt;gdyG+L(VJDyzu?`hQ#R)@*OT3UEG#68BM--W7GL+P37ySteVRrSv6by zqdm^gh;9jfl2#-5Vuw$|~9lIR&BemKLsiPm{N zYi8a&80^`UlbCB|xLj?2L3QV$rbo1{W-kKfaBqz#_m0Jpc>9z`7P;ZQ4e39&{LMUK zt#i{5=7;p;h=NneZH^biE5*sPzjb$Ue?D&CCe)(##rNA;LxTh5J0>j_JhdmShw_|X zr6%%D95tN~sC?OwF}oUDU%f4+SO3f|%%PSW_5;Py)xmjN+neX#cJm6>FH1P9Y2&-= zHv#dq`{l_?^F#9tZ!W%EKY8gl8fAfzM+S0rZjxHAG*?!-iZu@R#xU+V`)cVN8LKMc z7kurW07P47h-ql4-5Thc$Z^frARR8kV-ENkMBXY|H|59Tn4+VPBE~LiH@cZwaV=*| zr_-5}N4q=%r{JjhxlP^|27g(+TT^6pnsH+@s%ngHlTjt@{{D#(;w{TnFH#2*ft&lO zS!|eVK^0$9jmcWo>*)~OdVv{qHpTN0t3xNwu#av1O_N5kbxVHg!tJ#`X9S(&pdT64 z--hA>)z93Dk5I0fSYt>lx#e^=r9J2|;rfwZr#AbD!ay!gPch9xcu%CAzw=hUh`J@v!%=i2PP zn>l?!?0ZEW+6~7ZGQG-lyFID+Mug>wf`{EtfBX>^e z(T?ovu9~p-oO9NNkhIolOV_KRO~sBwGvjvU4QM9Xnaqmk%rEF$?Kzp5XzZSH51sF? z)zK;FbG|+6+t!7P7VjB!`Ce>0%{r_pDXVuwVsgp?m8aJ+^?T{f-K7-Fi@F`DO0VLU zuIV3B5FV$=zSomF*t4ET=!i8i1#*0yR)0Y1vTPTDN+a7~9_;p_v{h6j+UAeHfLrvE zgizc=jW4AI(|9GNSK|*e_P}md-Psnp*0g(%)Z>l?1=HBIcn8=S?lRC5KI>TK05h46 z0R_{JIY(x}wb0KR>Y~>nDYIavAEH3PWOrcgez+E@1sSKnX8mNC>9(ycRC4S_+6vhH zz6K%ga#F@Fn2D;VC#02 [!WARNING|style:flat] -> This question is temporarily unanswered if you have good ideas. Welcome to [Create Pull Request PR](https://github.com/kylesliu/awesome-golang-algorithm) - ## Description +You are given an integer `eventTime` denoting the duration of an event. You are also given two integer arrays `startTime` and `endTime`, each of length `n`. + +These represent the start and end times of `n` **non-overlapping** meetings that occur during the event between time `t = 0` and time `t = eventTime`, where the `ith` meeting occurs during the time `[startTime[i], endTime[i]]`. + +You can reschedule **at most** one meeting by moving its start time while maintaining the **same duration**, such that the meetings remain non-overlapping, to **maximize** the **longest** continuous period of free time during the event. + +Return the **maximum** amount of free time possible after rearranging the meetings. + +**Note** that the meetings can **not** be rescheduled to a time outside the event and they should remain non-overlapping. + +**Note**: In this version, it is **valid** for the relative ordering of the meetings to change after rescheduling one meeting. + +**Example 1:** + +![1](./1.png) + +``` +Input: eventTime = 5, startTime = [1,3], endTime = [2,5] + +Output: 2 + +Explanation: + +Reschedule the meeting at [1, 2] to [2, 3], leaving no meetings during the time [0, 2]. +``` -**Example 1:** +**Example 2:** + +![2](./2.png) ``` -Input: a = "11", b = "1" -Output: "100" +Input: eventTime = 10, startTime = [0,7,9], endTime = [1,8,10] + +Output: 7 + +Explanation: + +Reschedule the meeting at [0, 1] to [8, 9], leaving no meetings during the time [0, 7]. +``` + +**Example 3:** + +![3](./3.png) + ``` +Input: eventTime = 10, startTime = [0,3,7,9], endTime = [1,4,8,10] + +Output: 6 -## 题意 -> ... +Explanation: + +Reschedule the meeting at [3, 4] to [8, 9], leaving no meetings during the time [1, 7]. +``` -## 题解 +**Example 4:** -### 思路1 -> ... -Reschedule Meetings for Maximum Free Time II -```go ``` +Input: eventTime = 5, startTime = [0,1,2,3,4], endTime = [1,2,3,4,5] +Output: 0 + +Explanation: + +There is no time during the event not occupied by meetings. +``` ## 结语 diff --git a/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/Solution.go b/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/Solution.go index d115ccf5e..f56eb3953 100644 --- a/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/Solution.go +++ b/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/Solution.go @@ -1,5 +1,44 @@ package Solution -func Solution(x bool) bool { - return x +func Solution(eventTime int, startTime []int, endTime []int) int { + n := len(startTime) + q := make([]bool, n) + t1, t2 := 0, 0 + for i := 0; i < n; i++ { + if endTime[i]-startTime[i] <= t1 { + q[i] = true + } + if i == 0 { + t1 = max(t1, startTime[i]) + } else { + t1 = max(t1, startTime[i]-endTime[i-1]) + } + + if endTime[n-i-1]-startTime[n-i-1] <= t2 { + q[n-i-1] = true + } + if i == 0 { + t2 = max(t2, eventTime-endTime[n-1]) + } else { + t2 = max(t2, startTime[n-i]-endTime[n-i-1]) + } + } + + res := 0 + for i := 0; i < n; i++ { + left := 0 + if i != 0 { + left = endTime[i-1] + } + right := eventTime + if i != n-1 { + right = startTime[i+1] + } + if q[i] { + res = max(res, right-left) + } else { + res = max(res, right-left-(endTime[i]-startTime[i])) + } + } + return res } diff --git a/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/Solution_test.go b/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/Solution_test.go index 14ff50eb4..3f6987388 100644 --- a/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/Solution_test.go +++ b/leetcode/3401-3500/3440.Reschedule-Meetings-for-Maximum-Free-Time-II/Solution_test.go @@ -9,31 +9,32 @@ import ( func TestSolution(t *testing.T) { // 测试用例 cases := []struct { - name string - inputs bool - expect bool + name string + eventTime int + startTime, endTime []int + expect int }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", 5, []int{1, 3}, []int{2, 5}, 2}, + {"TestCase2", 10, []int{0, 7, 9}, []int{1, 8, 10}, 7}, + {"TestCase3", 10, []int{0, 3, 7, 9}, []int{1, 4, 8, 10}, 6}, } // 开始测试 for i, c := range cases { t.Run(c.name+" "+strconv.Itoa(i), func(t *testing.T) { - got := Solution(c.inputs) + got := Solution(c.eventTime, c.startTime, c.endTime) if !reflect.DeepEqual(got, c.expect) { - t.Fatalf("expected: %v, but got: %v, with inputs: %v", - c.expect, got, c.inputs) + t.Fatalf("expected: %v, but got: %v, with inputs: %v %v %v", + c.expect, got, c.eventTime, c.startTime, c.endTime) } }) } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }