searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

把数组排成最小的数-算法学习

2023-07-11 10:13:26
2
0
题目详情:
输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
例如
输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。
1.输出结果可能非常大,所以你需要返回一个字符串而不是整数
2.拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0
 
解题思路:
将数组转换为字符串数组。
自定义排序方法,比较两个字符串 str1 和 str2 的拼接结果 str1+str2 和 str2+str1 的大小。
如果 str1+str2 < str2+str1,则 str1 排在 str2 前面。
如果 str1+str2 > str2+str1,则 str2 排在 str1 前面。
如果 str1+str2 = str2+str1,则 str1 和 str2 相对位置不变。
使用自定义的排序方法对字符串数组进行排序。
将排序后的字符串按顺序拼接起来,得到的结果即为能拼接出的所有数字中最小的一个。
 
代码实现:
function minNumber(numbers) {
    // 将数组转换为字符串数组
    const strArr = numbers.map(num => num.toString());
 
    // 自定义排序方法
    strArr.sort((a, b) => {
        const str1 = a + b;
        const str2 = b + a;
        if (str1 < str2) {
            return -1;
        } else if (str1 > str2) {
            return 1;
        } else {
            return 0;
        }
    });
 
    // 拼接排序后的字符串
    return strArr.join('');
}
 
// 测试示例
console.log(minNumber([3, 32, 321])); // 输出: "321323"
0条评论
作者已关闭评论
t****m
98文章数
1粉丝数
t****m
98 文章 | 1 粉丝
t****m
98文章数
1粉丝数
t****m
98 文章 | 1 粉丝
原创

把数组排成最小的数-算法学习

2023-07-11 10:13:26
2
0
题目详情:
输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
例如
输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。
1.输出结果可能非常大,所以你需要返回一个字符串而不是整数
2.拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0
 
解题思路:
将数组转换为字符串数组。
自定义排序方法,比较两个字符串 str1 和 str2 的拼接结果 str1+str2 和 str2+str1 的大小。
如果 str1+str2 < str2+str1,则 str1 排在 str2 前面。
如果 str1+str2 > str2+str1,则 str2 排在 str1 前面。
如果 str1+str2 = str2+str1,则 str1 和 str2 相对位置不变。
使用自定义的排序方法对字符串数组进行排序。
将排序后的字符串按顺序拼接起来,得到的结果即为能拼接出的所有数字中最小的一个。
 
代码实现:
function minNumber(numbers) {
    // 将数组转换为字符串数组
    const strArr = numbers.map(num => num.toString());
 
    // 自定义排序方法
    strArr.sort((a, b) => {
        const str1 = a + b;
        const str2 = b + a;
        if (str1 < str2) {
            return -1;
        } else if (str1 > str2) {
            return 1;
        } else {
            return 0;
        }
    });
 
    // 拼接排序后的字符串
    return strArr.join('');
}
 
// 测试示例
console.log(minNumber([3, 32, 321])); // 输出: "321323"
文章来自个人专栏
js
57 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0