1. 程式人生 > >【劍指offer】32把陣列排成最小的數

【劍指offer】32把陣列排成最小的數

/**
*輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。
*例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。
*/

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Solution {

    public String PrintMinNumber(int [] numbers) {
        int n= numbers.length;
        ArrayList<Integer> list= new
ArrayList<Integer>(n); for(int i=0;i<n;i++){ list.add(numbers[i]); } String s=""; Collections.sort(list, new Comparator<Integer>(){ public int compare(Integer str1,Integer str2){ String s1=str1+""+str2; String s2=str2+""
+str1; return s1.compareTo(s2); } }); for(int i:list){ s+=i; } return s; } public static void main(String[] args) { Solution s=new Solution(); int [] array={3,32,321}; System.out.println(s.PrintMinNumber(array)); } } /* 對vector容器內的資料進行排序,按照 將a和b轉為string後 若 a+b<b+a a排在在前 的規則排序, 如 2 21 因為 212 < 221 所以 排序後為 21 2 to_string() 可以將int 轉化為string */

相關推薦

offer32陣列排成小的數

/** *輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。 *例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 */ i

Offer05旋轉陣列小數字

題目描述 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。 NOTE:給出的所有元素都大於0,若陣列大小為0,請返回0。 時間

offer連續子陣列大和

時間限制:1秒 空間限制:32768K 熱度指數:54591 本題知識點: 陣列 題目描述 HZ偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了:在古老的一維模

offer》系列 陣列排成小的數(Java)

連結 牛客:把陣列排成最小的數 題目描述 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 思路 1、全排列 求出陣列中所有數字的全排列

Offer11調整陣列順序使奇數位於偶數前面

題目描述 輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分,所有的偶數位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 時間限制:1秒;空間限制:32768K;本題知識點: 陣列 解題思路 思路一 建立一個新的陣列,先判

offer連續子陣列大和

題目:在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如:{6,-3,-2,7,-15,1,2,2},連續子向量的最大和為8(從第0個開始,到第3個為止)。給一個數組,返回它的最大連續子序

offer二維陣列中的查詢——複雜度為O(n+m)——採用PHP寫法

背景 今天偶然進入牛客網,看到《劍指offer》模組有演算法題,就開始試著答題   題目描述 在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣

offer二維陣列中的查詢

題目描述: 在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 解題思路: 從矩陣的左下角或右上角開始搜尋, 如果目標<

offer 二維陣列中的查詢

題目: 個人部落格 在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 1、在一個二維陣列中(每個一

offer滑動窗口的大值,C++實現

AD png lock -a https 大小 idt style 可能 原創博文,轉載請註明出處! # 題目 # 思路 利用C++中的雙端隊列保存有可能是滑動窗口最大值的下標,其中隊首元素保存當前窗口最大值的下標。當滑動窗口改變時,更新隊列。隊列更新的規則:

offer旋轉數組的小數字

lca mpp elf jni nec suv fbi rrpp uio 一、題目: 把一個數組最開始的若幹個元素搬到數組的末尾,我們稱之為數組的旋轉。 輸入一個非減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{3,4,5,1,2}為{1,2,3,4

offer陣列排成小的數python

題目描述 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 思路 使用排序的思想:如果3+321 > 321 + 3那麼說明321應該在3的前面,

Offer陣列排成小的數

題目連結 題目描述 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。

offerQ33:陣列排成小的數

分析: 假如給定的陣列中的元素是1-9之間的數,我們怎麼來處理呢?比如[ 1,4,7,9,3,8],很簡單,排個序,就是134789。 這裡不同的一點就是,給定的數稍微複雜一點,不再單純的是1位的數,[3,32,321] 這種情況也會出現。我們還想用排序,那麼就需要自己制定

Offer26陣列中出現次數超過一半的數字

題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 時間限制:1秒;空間限制:32768K;本題知識點:陣列 解題思路

Java offer(44) 連續子陣列大和 《Offer》Java實現合集 《Offer》Java實現合集

本文參考自《劍指offer》一書,程式碼採用Java語言。 更多:《劍指Offer》Java實現合集   題目    數字以0123456789101112131415…的格式序列化到一個字元序列中。在這個序列中,第5位(從0開始計數)是5,第13位是1,第19位是4,等等。請寫一個

offer第一題 二維陣列的查詢

平臺 牛客網 語言  python2.7.3   作業內容  題目描述     在一個二維陣列中(每個一維陣列的長度相同),     每一行都按照從左到右遞增的順序排序,    

offer調整陣列數字位置

輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分,所有的偶數位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 *思路:遍歷陣列,找到第一個偶數的位置 i ,然後以此位置為起點,找到後續第一個奇數的位置 j,然後儲存下 array[j], 並將索引為

offer陣列中的逆序對(校正書上錯誤)歸併排序

題目描述 在陣列中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個陣列中的逆序對的總數P。並將P對1000000007取模的結果輸出。 即輸出P%1000000007 題目保證輸入的陣列中沒有的相同的數字 資料範圍:

offer數字在排序陣列中出現的次數

想的是先二分查詢,找到之後再找周圍是否有相同 執行時間:27ms 佔用記憶體:5752k # -*- coding:utf-8 -*- class Solution: def GetNumberOfK(self, data, k): # writ