• 《剑指offer》把数组排成最小的数


    本题来自《剑指offer》 把数组排成最小的数

    题目:

       输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

    思路:

       看《剑指offer》p117。

    C++ Code:

    Python Code:

    # -*- coding:utf-8 -*-
    class Solution:
        def PrintMinNumber(self, numbers):
            # write code here
            if len(numbers) == 0:                    #边界判断
                return ''
            len_numbers = len(numbers)               #数组的长度
            number = ''                              #目标结果缓存值
            for i in range(len(numbers)):            #遍历数组中的全部值
                for j in range(len_numbers-1):       #下标
                    num1 = str(numbers[j])           #取第一个值,都是字符串
                    num2 = str(numbers[j+1])         #取第二个值
                    num3 = num1 + num2               #两者相加
                    num4 = num2 + num1
                    if int(num3) > int(num4):        #如果大于就交换
                        temp = numbers[j]
                        numbers[j] = numbers[j+1]
                        numbers[j+1] = temp
                len_numbers -= 1
                if numbers == 1:                     #如果只有一个值,便退出此循环
                    break
            for num in numbers:
                number = number + str(num)           #字符串的累加
            return int(number)                       #转换成int型
  • 相关阅读:
    开发脚本自动部署及监控
    内存进程与软件包安装
    Linux常用指令
    网络协议
    Python基础(二)
    python基础(一)
    shell编程
    正则与sed,grep,awk三剑客
    网络配置和元字符
    nginx
  • 原文地址:https://www.cnblogs.com/missidiot/p/10783669.html
Copyright © 2020-2023  润新知