diff --git a/.commitmsg b/.commitmsg index 1a6a18bd812b..7f83ec438ccc 100644 --- a/.commitmsg +++ b/.commitmsg @@ -1,25 +1,5 @@ -今天: +1200: AC.cpp+py+go(#1348) + word: (en) -1984: AC.cpp+py+go+java+rust (#1346) + word: en(jp) - -cpp - AC,100.00%,33.57% -WA.py -py - AC,84.93%,7.24% -WA.go -go - AC,28.13%,20.31% -java - AC,83.61%,5.02% -rust - AC,100.00%,76.47% - ---- - -昨天: - -1877: AC.cpp+java+rust+py+go (#1344) - -cpp - AC,74.40%,21.43% -py - AC,9.40%,17.09% -py - AC,63.25%,7.69%,len()/2 -py - AC,51.28%,11.97% - [~i] -go - AC,44.44%,44.44% -rust - AC,50.00%,50.00% -java - AC,20.00%,10.00% \ No newline at end of file +cpp - AC,78.75%,27.52% +py - AC,79.19%,24.53% +go - AC,16.13%,61.29% \ No newline at end of file diff --git a/Codes/1200-minimum-absolute-difference_20260126.cpp b/Codes/1200-minimum-absolute-difference_20260126.cpp new file mode 100644 index 000000000000..acc2a241f238 --- /dev/null +++ b/Codes/1200-minimum-absolute-difference_20260126.cpp @@ -0,0 +1,28 @@ +/* + * @Author: LetMeFly + * @Date: 2026-01-26 23:38:09 + * @LastEditors: LetMeFly.xyz + * @LastEditTime: 2026-01-26 23:39:44 + */ +#if defined(_WIN32) || defined(__APPLE__) +#include "_[1,2]toVector.h" +#endif + +class Solution { +public: + vector> minimumAbsDifference(vector& arr) { + sort(arr.begin(), arr.end()); + vector> ans; + int mini = 10000001; + for (int i = 1; i < arr.size(); i++) { + int diff = arr[i] - arr[i - 1]; + if (diff == mini) { + ans.push_back({arr[i - 1], arr[i]}); + } else if (diff < mini) { + mini = diff; + ans = {{arr[i - 1], arr[i]}}; + } + } + return ans; + } +}; \ No newline at end of file diff --git a/Codes/1200-minimum-absolute-difference_20260126.go b/Codes/1200-minimum-absolute-difference_20260126.go new file mode 100644 index 000000000000..45e220690823 --- /dev/null +++ b/Codes/1200-minimum-absolute-difference_20260126.go @@ -0,0 +1,24 @@ +/* + * @Author: LetMeFly + * @Date: 2026-01-26 23:38:09 + * @LastEditors: LetMeFly.xyz + * @LastEditTime: 2026-01-26 23:48:45 + */ +package main + +import "sort" + +func minimumAbsDifference(arr []int) (ans [][]int) { + sort.Ints(arr) + mini := 10000000 + for i := 1; i < len(arr); i++ { + diff := arr[i] - arr[i - 1] + if diff < mini { + mini = diff + ans = [][]int{{arr[i - 1], arr[i]}} + } else if diff == mini { + ans = append(ans, []int{arr[i - 1], arr[i]}) + } + } + return +} \ No newline at end of file diff --git a/Codes/1200-minimum-absolute-difference_20260126.py b/Codes/1200-minimum-absolute-difference_20260126.py new file mode 100644 index 000000000000..35c6f2fd8c90 --- /dev/null +++ b/Codes/1200-minimum-absolute-difference_20260126.py @@ -0,0 +1,21 @@ +''' +Author: LetMeFly +Date: 2026-01-26 23:38:09 +LastEditors: LetMeFly.xyz +LastEditTime: 2026-01-26 23:45:24 +''' +from typing import List + +class Solution: + def minimumAbsDifference(self, arr: List[int]) -> List[List[int]]: + arr.sort() + ans = [] + mini = 10000000 + for i in range(1, len(arr)): + diff = arr[i] - arr[i - 1] + if diff < mini: + ans = [[arr[i - 1], arr[i]]] + mini = diff + elif diff == mini: + ans.append([arr[i - 1], arr[i]]) + return ans \ No newline at end of file diff --git a/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125.go b/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125.go index a8ab9fee877e..ca1087ad6ec3 100644 --- a/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125.go +++ b/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125.go @@ -2,17 +2,17 @@ * @Author: LetMeFly * @Date: 2026-01-25 10:32:52 * @LastEditors: LetMeFly.xyz - * @LastEditTime: 2026-01-25 10:39:42 + * @LastEditTime: 2026-01-25 10:39:56 */ package main import "sort" -// THIS CANNOT BE ACCEPTED -func minimumDifference(nums []int, k int) (ans int) { +func minimumDifference(nums []int, k int) int { + ans := 100000 sort.Ints(nums) for i := 0; i < len(nums) - k + 1; i++ { ans = min(ans, nums[i + k - 1] - nums[i]) } - return + return ans } \ No newline at end of file diff --git a/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125.py b/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125.py index 0f91d9574fe4..a9b991a5bb96 100644 --- a/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125.py +++ b/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125.py @@ -2,12 +2,11 @@ Author: LetMeFly Date: 2026-01-25 10:32:52 LastEditors: LetMeFly.xyz -LastEditTime: 2026-01-25 10:35:25 +LastEditTime: 2026-01-25 10:37:04 ''' from typing import List -# THIS CANNOT BE ACCEPTED class Solution: def minimumDifference(self, nums: List[int], k: int) -> int: nums.sort() - return max(nums[i + k - 1] - nums[i] for i in range(len(nums) - k + 1)) \ No newline at end of file + return min(nums[i + k - 1] - nums[i] for i in range(len(nums) - k + 1)) \ No newline at end of file diff --git a/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125_AC.go b/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125_AC.go deleted file mode 100644 index ca1087ad6ec3..000000000000 --- a/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125_AC.go +++ /dev/null @@ -1,18 +0,0 @@ -/* - * @Author: LetMeFly - * @Date: 2026-01-25 10:32:52 - * @LastEditors: LetMeFly.xyz - * @LastEditTime: 2026-01-25 10:39:56 - */ -package main - -import "sort" - -func minimumDifference(nums []int, k int) int { - ans := 100000 - sort.Ints(nums) - for i := 0; i < len(nums) - k + 1; i++ { - ans = min(ans, nums[i + k - 1] - nums[i]) - } - return ans -} \ No newline at end of file diff --git a/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125_AC.py b/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125_AC.py deleted file mode 100644 index a9b991a5bb96..000000000000 --- a/Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125_AC.py +++ /dev/null @@ -1,12 +0,0 @@ -''' -Author: LetMeFly -Date: 2026-01-25 10:32:52 -LastEditors: LetMeFly.xyz -LastEditTime: 2026-01-25 10:37:04 -''' -from typing import List - -class Solution: - def minimumDifference(self, nums: List[int], k: int) -> int: - nums.sort() - return min(nums[i + k - 1] - nums[i] for i in range(len(nums) - k + 1)) \ No newline at end of file diff --git "a/Solutions/LeetCode 1200.\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" "b/Solutions/LeetCode 1200.\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" index a01c56920429..74e363cd2cb4 100644 --- "a/Solutions/LeetCode 1200.\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" +++ "b/Solutions/LeetCode 1200.\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" @@ -44,7 +44,7 @@ categories: [题解, LeetCode] -## 方法一:排序 +## 方法一:排序+两次遍历 这道题的数据范围是$10^5$,因此无法$O(n^2)$暴力 @@ -81,5 +81,92 @@ public: }; ``` +## 方法二:排序+一次遍历 + +一次遍历直接在ans中存储当前所有差值为当前最小值的pair,如果有更小的pair-diff则之前存的都扔掉。 + ++ 时间复杂度$O(n\log n)$,其中 $n$ 是数组 $\textit{arr}$ 的长度 ++ 空间复杂度$O(n)$,最坏情况可能存接近$n$对非答案 + +### AC代码 + +#### C++ + +```cpp +/* + * @LastEditTime: 2026-01-26 23:39:44 + */ +class Solution { +public: + vector> minimumAbsDifference(vector& arr) { + sort(arr.begin(), arr.end()); + vector> ans; + int mini = 10000001; + for (int i = 1; i < arr.size(); i++) { + int diff = arr[i] - arr[i - 1]; + if (diff == mini) { + ans.push_back({arr[i - 1], arr[i]}); + } else if (diff < mini) { + mini = diff; + ans = {{arr[i - 1], arr[i]}}; + } + } + return ans; + } +}; +``` + +#### Py + +```python +''' +LastEditTime: 2026-01-26 23:45:24 +''' +from typing import List + +class Solution: + def minimumAbsDifference(self, arr: List[int]) -> List[List[int]]: + arr.sort() + ans = [] + mini = 10000000 + for i in range(1, len(arr)): + diff = arr[i] - arr[i - 1] + if diff < mini: + ans = [[arr[i - 1], arr[i]]] + mini = diff + elif diff == mini: + ans.append([arr[i - 1], arr[i]]) + return ans +``` + +#### Go + +```go +/* + * @Author: LetMeFly + * @Date: 2026-01-26 23:38:09 + * @LastEditors: LetMeFly.xyz + * @LastEditTime: 2026-01-26 23:48:45 + */ +package main + +import "sort" + +func minimumAbsDifference(arr []int) (ans [][]int) { + sort.Ints(arr) + mini := 10000000 + for i := 1; i < len(arr); i++ { + diff := arr[i] - arr[i - 1] + if diff < mini { + mini = diff + ans = [][]int{{arr[i - 1], arr[i]}} + } else if diff == mini { + ans = append(ans, []int{arr[i - 1], arr[i]}) + } + } + return +} +``` + > 同步发文于CSDN,原创不易,转载请附上[原文链接](https://blog.letmefly.xyz/2022/07/04/LeetCode%201200.%E6%9C%80%E5%B0%8F%E7%BB%9D%E5%AF%B9%E5%B7%AE/)哦~ > Tisfy:[https://letmefly.blog.csdn.net/article/details/125609898](https://letmefly.blog.csdn.net/article/details/125609898) diff --git a/todo b/todo index a86817e29301..2a60e04cbcca 100644 --- a/todo +++ b/todo @@ -1,5 +1,6 @@ -# rm Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125.py -# rm Codes/1984-minimum-difference-between-highest-and-lowest-of-k-scores_20260125.go +# record best-effort + +# Solutions\LeetCode 1200.最小绝对差.md tail # html 电脑屏幕取色器 # https://web.letmefly.xyz/%E8%AE%A1%E7%AE%97%E6%9C%BACode/HTML%E7%94%B5%E8%84%91%E5%B1%8F%E5%B9%95%E5%8F%96%E8%89%B2%E5%99%A8/