• 每日一练leetcode


    剑指 Offer 45. 把数组排成最小的数

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

    示例 1:

    输入: [10,2]
    输出: "102"

    示例 2:

    输入: [3,30,34,5,9]
    输出: "3033459"

     

     第一种:快速排序(更改排序方式)

    class Solution {
        public String minNumber(int[] nums) {
          String strs[] = new String[nums.length];
          for(int i = 0;i< nums.length;i++){
              strs[i] = String.valueOf(nums[i]);
          }
          quickSort(strs,0,strs.length - 1);
          StringBuilder res = new StringBuilder();
          for(String s:strs){
              res.append(s);
          }
          return res.toString();
        }
        public void quickSort(String[] args,int l,int r){
            if(l >= r)return;
            int i = l,j = r;
            while(i < j){
                while((args[j]+args[l]).compareTo(args[l]+args[j]) >= 0 && i < j)j--;
                while((args[i]+args[l]).compareTo(args[l]+args[i]) <= 0 && i < j)i++;
                swap(args,i,j);
            }   
            swap(args,i,l);
            quickSort(args,l,i-1);
            quickSort(args,i+1,r);
        }
        public void swap(String[] argss,int x,int y){
            String temp ;
            temp = argss[y];
            argss[y] = argss[x];
            argss[x] = temp;
    
        }
    }
    

      知识点:

    如何将字符串数组改为字符串

    StringBuilder res = new StringBuilder();//StringBuilder类型
    for(String s:strs){ 
    res.append(s); }
    res.toString();//转为字符串类型

    写交换函数时不能写成
    public void swap(int x,int y)
    因为这样改的只是形参而非数组中实参。

    String.valueOf()//转为String函数

    compareTo() 方法用于将 Number 对象与方法的参数进行比较。可用于比较 Byte, Long, Integer等。

    该方法用于两个相同数据类型的比较,两个不同类型的数据不能用此方法来比较。

    • 如果指定的数与参数相等返回0。

    • 如果指定的数小于参数返回 -1。

    • 如果指定的数大于参数返回 1。

     方法二:内置函数排序
    class Solution {
        public String minNumber(int[] nums) {
          String strs[] = new String[nums.length];
          for(int i = 0;i< nums.length;i++){
              strs[i] = String.valueOf(nums[i]);
          }
          Arrays.sort(strs,(x,y)->(x+y).compareTo(y+x));
          StringBuilder res = new StringBuilder();
          for(String s:strs){
              res.append(s);
          }
          return res.toString();
        }
    

      

  • 相关阅读:
    Python—字符编码转换、函数基本操作
    零散知识点
    Python—集合的操作、文件的操作
    Python—字典的操作
    Python—字符串的操作
    Spring基础—— 在 Spring Config 中使用外部属性文件
    Spring基础—— Bean 的作用域
    Spring基础——在 IOC 容器中 Bean 之间的关系
    Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配
    Spring基础——一个简单的例子
  • 原文地址:https://www.cnblogs.com/nenu/p/15147914.html
Copyright © 2020-2023  润新知