From 25fd17ef6b03f123a6520f295cd31f3e08b15c39 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Fri, 12 Sep 2025 06:59:24 +0800 Subject: [PATCH] feat: add solutions to lc problems: No.3224~3226 --- .../README.md | 28 ++++++++++++++++++ .../README_EN.md | 28 ++++++++++++++++++ .../Solution.rs | 23 ++++++++++++++ .../images/rectangles.png | Bin 1461 -> 0 bytes .../README.md | 24 +++++++++++++++ .../README_EN.md | 24 +++++++++++++++ .../Solution.cs | 5 ++++ .../Solution.rs | 9 ++++++ 8 files changed, 141 insertions(+) create mode 100644 solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/Solution.rs delete mode 100644 solution/3200-3299/3225.Maximum Score From Grid Operations/images/rectangles.png create mode 100644 solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/Solution.cs create mode 100644 solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/Solution.rs diff --git a/solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/README.md b/solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/README.md index 5bbd629058f59..4489d067bfff1 100644 --- a/solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/README.md +++ b/solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/README.md @@ -240,6 +240,34 @@ function minChanges(nums: number[], k: number): number { } ``` +#### Rust + +```rust +impl Solution { + pub fn min_changes(nums: Vec, k: i32) -> i32 { + let n = nums.len(); + let mut d = vec![0; (k + 2) as usize]; + for i in 0..n / 2 { + let x = nums[i].min(nums[n - i - 1]); + let y = nums[i].max(nums[n - i - 1]); + d[0] += 1; + d[(y - x) as usize] -= 1; + d[(y - x + 1) as usize] += 1; + let idx = (y.max(k - x) + 1) as usize; + d[idx] -= 1; + d[idx] += 2; + } + let mut ans = n as i32; + let mut s = 0; + for x in d { + s += x; + ans = ans.min(s); + } + ans + } +} +``` + diff --git a/solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/README_EN.md b/solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/README_EN.md index 242423dcb6b62..66e84e72e6dff 100644 --- a/solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/README_EN.md +++ b/solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/README_EN.md @@ -238,6 +238,34 @@ function minChanges(nums: number[], k: number): number { } ``` +#### Rust + +```rust +impl Solution { + pub fn min_changes(nums: Vec, k: i32) -> i32 { + let n = nums.len(); + let mut d = vec![0; (k + 2) as usize]; + for i in 0..n / 2 { + let x = nums[i].min(nums[n - i - 1]); + let y = nums[i].max(nums[n - i - 1]); + d[0] += 1; + d[(y - x) as usize] -= 1; + d[(y - x + 1) as usize] += 1; + let idx = (y.max(k - x) + 1) as usize; + d[idx] -= 1; + d[idx] += 2; + } + let mut ans = n as i32; + let mut s = 0; + for x in d { + s += x; + ans = ans.min(s); + } + ans + } +} +``` + diff --git a/solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/Solution.rs b/solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/Solution.rs new file mode 100644 index 0000000000000..3efe91dcd7230 --- /dev/null +++ b/solution/3200-3299/3224.Minimum Array Changes to Make Differences Equal/Solution.rs @@ -0,0 +1,23 @@ +impl Solution { + pub fn min_changes(nums: Vec, k: i32) -> i32 { + let n = nums.len(); + let mut d = vec![0; (k + 2) as usize]; + for i in 0..n / 2 { + let x = nums[i].min(nums[n - i - 1]); + let y = nums[i].max(nums[n - i - 1]); + d[0] += 1; + d[(y - x) as usize] -= 1; + d[(y - x + 1) as usize] += 1; + let idx = (y.max(k - x) + 1) as usize; + d[idx] -= 1; + d[idx] += 2; + } + let mut ans = n as i32; + let mut s = 0; + for x in d { + s += x; + ans = ans.min(s); + } + ans + } +} diff --git a/solution/3200-3299/3225.Maximum Score From Grid Operations/images/rectangles.png b/solution/3200-3299/3225.Maximum Score From Grid Operations/images/rectangles.png deleted file mode 100644 index 6adb9f06edbad1fc34d964417443e30314af020b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1461 zcmeAS@N?(olHy`uVBq!ia0y~yV2lD{4i09Zh~~*NJAjl~fKQ0)|NsBf)6+#oMgO0k z+1S{)Zr!?{U*7*XcLpfGBP8Jei_8CSZTr8wX6n?b`uh5wo}Q;qpT2wd?#x}YgMlhI z3p^r=85p>QK$!8;-MT*v46Lf2E{-7;x8B~pn6y|+#4R!8Nq}M2z5l8FYL`884|uW7 z^4;_=&Uf~=N3-Y31~{a8F4S1ql3MCF zCAagYM7ZRFRxzNNNW?U_Jr|s~bsK@QoLeq9d1I&pYs05FesWnstog5!xzapae#Y#+ z*v)rL!?+^(KR*bVDb2Ycr>e!H)|O`7R`S+ea^?I~tFuaoasIQ*{gdHzkRwfWme zz1MPW?Pc+0KQ_iX{0=a;xZtyTMRets_8VD0bcEfj*C_b1Zo8DxuJ``+g1w?|C;V=` zuuSZ+fz#|MEn-@AQxv+*mNs|2-?k}ZvR0vq=%rU*1(VM&@VzwYo?z3K&wu8u@~!Uo ze$U}}%hSI7+S02JBNX5MirDjyb4zD(=)<#SF1stjbHzVyIh4+OQP63(S!?nBW8eNp z-di5=bj$vjt({xWg}UF~?qzyjqNexN)y%!C|6a;E8kW13*HP2%*uCl74jsIHIU{&E z&jqnryJk()j&I#Cr+Hhz=Bahu?qa!KieB&84`l@JkSUk+x|=qkZnC4)T1%d1GUX+w zOQMzcWgNXI7h4!|u*s@0dtaOL(-&6LF56xZ+72nI(jF%YcIuxpRf57 z$F!$z|G(1b`&Rw4X*pV-9KBWk|KBjXDOFE{ZLWQly>{-xG|8I4trxD@NjIYa5j|EYmGN zGpkpdv9EBPT^@7$v*EEE9@MmoYJBTA-i-8jy`qb*UjD{uap74mht5Y0*W1BcmuCE* z=XZS8`a9>#awHT*7RIhg`w*HDT5*2IHlDXNmQKA>yUrZLp1`3tcy75JT)W_``)b`S zsTs?sty-#h#pm=Pl~rKrX*VT+IRuzHF$it5sQq$pBfTV}a^rfoO%K|(&G%rdnc`aC zgQ9NLzvSLte(~F6_srRq>X&VfUOJYPpUMA7ZqeVpceE>ySvpjAEwTT4QRn*lfO89H zyx+-?zV=qdFZa4Bf4qaF4xPMgR#~mPWxjHY+IJ4dTiF-Yc=!IB`t8q&{z>(oCw5#D znbA8jNjR1X=%`84m&eLK&b;6E?RHk6sQu1LZPEP7!$!tip8MtB-ql+%ck=A~E!Ic(-OzM+t^efayfy*bot3}qg(|zZ*EW>d&Mf(D z@@o5X-o4xZ&v5VBF!QR&&!u6`zc=T6=(uxUkLPXwmU4A-`3YHi*FU_ka=q_nFLZxm zS!eybHM$n}teiu4Ptw2O=AU=3FMIKa;KMmRsAW!=magWM|BP~6t-Hef=W78=Q3g*} KKbLh*2~7aP3&>Oe diff --git a/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/README.md b/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/README.md index 04d6d0850a1dc..6eb95a6201682 100644 --- a/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/README.md +++ b/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/README.md @@ -140,6 +140,30 @@ function bitCount(i: number): number { } ``` +#### Rust + +```rust +impl Solution { + pub fn min_changes(n: i32, k: i32) -> i32 { + if (n & k) != k { + -1 + } else { + (n ^ k).count_ones() as i32 + } + } +} +``` + +#### C# + +```cs +public class Solution { + public int MinChanges(int n, int k) { + return (n & k) != k ? -1 : BitOperations.PopCount((uint)(n ^ k)); + } +} +``` + diff --git a/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/README_EN.md b/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/README_EN.md index 891c5e63f9968..808d59dad5eff 100644 --- a/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/README_EN.md +++ b/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/README_EN.md @@ -137,6 +137,30 @@ function bitCount(i: number): number { } ``` +#### Rust + +```rust +impl Solution { + pub fn min_changes(n: i32, k: i32) -> i32 { + if (n & k) != k { + -1 + } else { + (n ^ k).count_ones() as i32 + } + } +} +``` + +#### C# + +```cs +public class Solution { + public int MinChanges(int n, int k) { + return (n & k) != k ? -1 : BitOperations.PopCount((uint)(n ^ k)); + } +} +``` + diff --git a/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/Solution.cs b/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/Solution.cs new file mode 100644 index 0000000000000..ea2911fa339ed --- /dev/null +++ b/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/Solution.cs @@ -0,0 +1,5 @@ +public class Solution { + public int MinChanges(int n, int k) { + return (n & k) != k ? -1 : BitOperations.PopCount((uint)(n ^ k)); + } +} diff --git a/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/Solution.rs b/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/Solution.rs new file mode 100644 index 0000000000000..e377c164b294f --- /dev/null +++ b/solution/3200-3299/3226.Number of Bit Changes to Make Two Integers Equal/Solution.rs @@ -0,0 +1,9 @@ +impl Solution { + pub fn min_changes(n: i32, k: i32) -> i32 { + if (n & k) != k { + -1 + } else { + (n ^ k).count_ones() as i32 + } + } +}