zoukankan      html  css  js  c++  java
  • 每日一练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();
        }
    

      

  • 相关阅读:
    在内容页中修改母版页中的内容
    mssql分页
    .net 时间格式(转)
    EnableViewState详细分析
    .net自带的邮件发送类
    只有在配置文件或 Page 指令中将 enableSessionState”的异常解决办法
    web.config配置
    Web.config配置文件详解(转载)
    [Resume]:Resume(English)
    Observer Pattern, Delegate and Event
  • 原文地址:https://www.cnblogs.com/nenu/p/15147914.html
Copyright © 2011-2022 走看看