zoukankan      html  css  js  c++  java
  • 剑指offer31-把数组排成最小值

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

    思路:改编快排,对数组排序,排序的要求是,如果AB小于BA,则A放在B前面。

        string PrintMinNumber(vector<int> numbers) {
            //数字转换为string,比较大小,排序
            //数字转换为string,string转换为int:atoi
            //快排
            //if(numbers.empty()) return 0;
            if(numbers.size()>1)
            Quicksort(numbers,0,numbers.size()-1);
            string s="";
            for(int i=0;i<numbers.size();i++)
            s+=to_string(numbers[i]);
            return s;
        }
        void Quicksort(vector<int>&number,int left,int right)
        {
            if(left<right)
            {
                int pos=Quick(number,left,right);
            
                Quicksort(number,left,pos-1);
            
                Quicksort(number,pos+1,right);
            }
            
        }
        int Quick(vector<int>&number,int left,int right)
        {
            int j=left,pos_value=number[left];
            
            for(int i=left+1;i<=right;i++)
            {
                int a=atoi((to_string(number[i])+to_string(number[left])).c_str());
                int b=atoi((to_string(number[left])+to_string(number[i])).c_str());
                if(a<b)
                {
                    j++;
                    if(i!=j)
                    {
                        int temp=number[i];
                        number[i]=number[j];
                        number[j]=temp;
                    }
                }
            }
            number[left]=number[j];
            number[j]=pos_value;
            return j;
        }
        string to_string(int n)
        {
            //n>0
            char s[100],ss[100];
            int i=0,j=0;
            while(n)
            {
                s[i++]=n%10+'0';
                n/=10;
            }
            //s[i]='/0';
            while(i)
            {
                ss[j++]=s[--i];
            }
            ss[j]='';
            return ss;
        }

  • 相关阅读:
    pandas.DataFrame.to_excel
    python list [:1]
    python 读取文件
    pandas 中的常用数学计算
    神经网络相关术语
    keras初探
    机器学习相关
    Numpy random arange zeros
    numpy 常用函数
    【Redis学习之四】Redis数据类型 string
  • 原文地址:https://www.cnblogs.com/trouble-easy/p/12976511.html
Copyright © 2011-2022 走看看