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)
+})