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) {