From ca6f240d3e0916066090c1e489fe831cf7411d1f Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Fri, 30 Oct 2026 20:18:04 +0800 Subject: [PATCH] =?UTF-8?q?Update=2045.=20=E6=8A=8A=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E6=8E=92=E6=88=90=E6=9C=80=E5=B0=8F=E7=9A=84=E6=95=B0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充自定义字符串排序规则的具体拼接示例,并补充比较规则等价于无限小数比较及满足传递性的原理解释。 --- notes/45. 把数组排成最小的数.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/notes/45. 把数组排成最小的数.md b/notes/45. 把数组排成最小的数.md index 7edfb267..e303a041 100644 --- a/notes/45. 把数组排成最小的数.md +++ b/notes/45. 把数组排成最小的数.md @@ -10,7 +10,9 @@ ## 解题思路 -可以看成是一个排序问题,在比较两个字符串 S1 和 S2 的大小时,应该比较的是 S1+S2 和 S2+S1 的大小,如果 S1+S2 \< S2+S1,那么应该把 S1 排在前面,否则应该把 S2 排在前面。 +可以看成是一个排序问题,在比较两个字符串 S1 和 S2 的大小时,应该比较的是 S1+S2 和 S2+S1 的大小,如果 S1+S2 \< S2+S1,那么应该把 S1 排在前面,否则应该把 S2 排在前面。例如 3 和 32 拼接得到 332 和 323,323 更小,所以 32 排在 3 前面。 + +这个比较规则可以直接用于排序,是因为它等价于比较每个数字无限重复后得到的小数,例如 3 对应 0.333…,32 对应 0.3232…,后者更小。实数的大小关系有传递性,所以不会出现 a 在 b 前、b 在 c 前、c 又在 a 前的矛盾。 ```java public String crackPassword(int[] password) {