From 89d8ac5e58518f5beb947c1660aa9510eca2cc5a Mon Sep 17 00:00:00 2001 From: yi-ge Date: Thu, 2 Jul 2020 11:36:45 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E6=9C=89=E5=BA=8F=E7=9F=A9=E9=98=B5?= =?UTF-8?q?=E4=B8=AD=E7=AC=ACK=E5=B0=8F=E7=9A=84=E5=85=83=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +++++ ...kth-smallest-element-in-a-sorted-matrix.js | 8 ++++++++ ...mallest-element-in-a-sorted-matrix.test.js | 20 +++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 src/array/kth-smallest-element-in-a-sorted-matrix.js create mode 100644 test/array/kth-smallest-element-in-a-sorted-matrix.test.js diff --git a/README.md b/README.md index 8b24025..d557fb5 100644 --- a/README.md +++ b/README.md @@ -381,6 +381,11 @@ LeetCode 与 LintCode 解题记录。此为个人练习仓库,代码中对重 - LeetCode 718. 最长重复子数组 - LintCode 79. 最长公共子串 +- [有序矩阵中第K小的元素](src/array/kth-smallest-element-in-a-sorted-matrix.js) + + - LeetCode 378. 有序矩阵中第K小的元素 + - LintCode 401. 排序矩阵中的从小到大第k个数 + ## 栈 - [最大矩阵](src/stack/maximal-rectangle.js) diff --git a/src/array/kth-smallest-element-in-a-sorted-matrix.js b/src/array/kth-smallest-element-in-a-sorted-matrix.js new file mode 100644 index 0000000..b85c9bb --- /dev/null +++ b/src/array/kth-smallest-element-in-a-sorted-matrix.js @@ -0,0 +1,8 @@ +/** + * @param {number[][]} matrix + * @param {number} k + * @return {number} + */ +export const kthSmallest = function (matrix, k) { + return matrix.flat().sort((a, b) => a - b)[k - 1] +} diff --git a/test/array/kth-smallest-element-in-a-sorted-matrix.test.js b/test/array/kth-smallest-element-in-a-sorted-matrix.test.js new file mode 100644 index 0000000..c9720f8 --- /dev/null +++ b/test/array/kth-smallest-element-in-a-sorted-matrix.test.js @@ -0,0 +1,20 @@ +import { kthSmallest } from '../../src/array/kth-smallest-element-in-a-sorted-matrix.js' + +test('有序矩阵中第K小的元素', () => { + expect(kthSmallest([ + [1, 5, 9], + [10, 11, 13], + [12, 13, 15] + ], 8)).toBe(13) + + expect(kthSmallest([ + [1, 5, 7], + [3, 7, 8], + [4, 8, 9] + ], 4)).toBe(5) + + expect(kthSmallest([ + [1, 2], + [3, 4] + ], 3)).toBe(3) +})