【劍指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
*/
相關推薦
【劍指offer】32把陣列排成最小的數
/** *輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。 *例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 */ i
【劍指Offer】05旋轉陣列的最小數字
題目描述 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{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、全排列 求出陣列中所有數字的全排列
【劍指Offer】11調整陣列順序使奇數位於偶數前面
題目描述 輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分,所有的偶數位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 時間限制: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。
【劍指offer】Q33:把陣列排成最小的數
分析: 假如給定的陣列中的元素是1-9之間的數,我們怎麼來處理呢?比如[ 1,4,7,9,3,8],很簡單,排個序,就是134789。 這裡不同的一點就是,給定的數稍微複雜一點,不再單純的是1位的數,[3,32,321] 這種情況也會出現。我們還想用排序,那麼就需要自己制定
【劍指Offer】26陣列中出現次數超過一半的數字
題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為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