1. 把数组中的数排成最小的数

输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。

  1. 示例 1:
  2. 输入: [10,2]
  3. 输出: "102"
  4. 示例 2:
  5. 输入: [3,30,34,5,9]
  6. 输出: "3033459"
  7. 提示:
  8. 0 < nums.length <= 100

思路:

  • 找到数组中的第一位(将数变成字符数组,找到索引为0的那个元素最小)最小的数
    • 遍历数组中的元素,将元素转化为charArray,获取到索引为0的元素,第一次以最小值并记录下来,后面的元素就与其进行比较,如果小就进行最小的元素的替换(第一次的min获取出来,需要记录其charArray[1]以为后序可能需要进行的比较做准备,如果是<10,那么直接将当前min作为charArray[1])
    • 这里在判断最小的时候,如果当前数提取出来的charArray[0]==min,那么就需要判断该数是否>9,如果大于那么久判断charArray[1]与min这个数的charArray[1]比较
    • 一轮循环筛选之后,剔除原数组中的min这个元素,然后循环进行下一次遍历,知道数组中元素个数为0为止
  • 将每一次循环找到的min用一个res数组进行装载,最后循环该数组,进行字符串拼接
  • 返回这个字符串

1288 12880

128 12
212 21
2 2221
122211222
122212221
“10481090114311471380141714951518154817631922000206021321622812231323622362246526972732745282297030213084316332983399346235163567357536363650366436993836384639053932428344534704479848124980520854225460552956825712578459095972603862216241626563066327651165546636698674467586806685670327100720573217423747175367605784679828070810781081838353839889378939902690949149385944894569533968598279890”

“10481090114311471380141714951518154817631922000206021321622281231323622362246526972732745282297030213084316332983399346235163567357536363650366436993836384639053932428344534704479848124980520854225460552956825712578459095972603862216241626563066327651165546636698674467586806685670327100720573217423747175367605784679828070810781081838353839889378939902690949149385944894569533968598279890”

2281 2

“101410891272160316131630210921162264230423624362439258126232709278828693288339334023513700372338663910394639639764088428943453245424555466247104787482250415137521352245228544154905526556556385731575258175828590660286145631063256406678768046822683686171007107219726572727440751975277584771781378805281618274830883083748382859185978701871877588238902898589959051952595569579632964298549959”

“101410891272160316131630210921162264230423624362439258126232709278828693288339334023513700372338663910394639639764088428943453245424555466247104787482250415137521352245228544154905526556556385731575258175828590660286145631063256406678768046822683686171007107219726572727440751975277584771781378805281618274830830883748382859185978701871877588238902898589959051952595569579632964298549959”

8308 830
121 12