zoukankan      html  css  js  c++  java
  • 剑指offer 面试45题

    面试45题:

    题:把数组排成最小的数

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

    解题思路一:暴力破解:先求所有数字的全排列,然后求最小值

    解题代码:

    # -*- coding:utf-8 -*-
    import itertools
    class Solution:
        def PrintMinNumber(self, numbers):
            # write code here
            #暴力解法
            if len(numbers)<=0:
                return ""
            str_numbers=[str(i) for i in numbers]
            premu=itertools.permutations(str_numbers)
            res=[''.join(i) for i in premu]
            return min(res)

    解题代码二:将数字转换为字符串后进行自定义排序(使得按照字符串拼接的从小到大的顺序排列)

    设计比较大小的规则为 若 ab > ba 则 b应该在a前面。

     cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。

    是两两对象之间的比较,排序默认是从小到大,在这个函数内部实现的两两排序。

    # -*- coding:utf-8 -*-
    class Solution:
        def PrintMinNumber(self, numbers):
            # write code here
            #暴力解法
            if len(numbers)<=0:
                return ""
            str_numbers=[str(i) for i in numbers]
            res=sorted(str_numbers,cmp=lambda x,y:cmp(x+y,y+x))
            return ''.join(res)
  • 相关阅读:
    python time库
    python urllib.request
    python random库
    python3中post请求 json 数据
    python3 中post处理json 数据
    python3中post和get请求处理
    ThinVnc-身份验证绕过(CVE-2019-17662)
    python3 获取博彩网站页面下所有域名(批量)
    Apache Solr Velocity模板注入RCE漏洞复现
    宽字节注入和防御
  • 原文地址:https://www.cnblogs.com/yanmk/p/9224928.html
Copyright © 2011-2022 走看看