19 把數組排成最小的數
0 引言
問題:輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。
例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字為321323。
1 抽象問題具體化
舉例:輸入數組{3,32,321},打印出這三個數字能排成的最小數字.
1. 3與32相比,32排在3的前邊,得到序列32,3;
2. 321與3相比,321排在3的前邊;321與32相比,321排在32的前邊,得到序列321,32,3;
3. 打印序列321323.
2 具體問題抽象分析
1. 定義排序規則:兩個數字,從最高位數字開始比較。
1.1 如果小,則排在前邊;
1.2 如果大,則排在後邊;
1.3 如果相等,則比較下一位,如果下一位不存在,則比較當前數與前一位的大。
1.3.1 如果小於,則排前邊;
1.3.2 如果大於,則排後邊;
1.3.3 如果相等,則隨意。
2. 將所有數拼接起來,輸出即可.
3. 為了便於對數中的每個數字單獨處理,將數轉成字符串.
3 demo
4 代碼優化
19 把數組排成最小的數
相關推薦
19 把數組排成最小的數
不存在 兩個 3.1 問題 一個數 demo 排序規則 一個 最小數 0 引言 問題:輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字為321323。 1 抽
劍指offer33 把數組排成最小的數
cmp solution 數組 b+ tor 函數 ber return () 正確代碼 class Solution { public: string PrintMinNumber(vector<int> numbers) { vec
把數組排成最小的數
stream get 小數 gin com targe auto blog static 題目描述 輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字為32132
劍指offer - 面試題33 - 把數組排成最小的數
print offer include .html str 把數組排成最小的數 pri tr1 class #include<iostream> #include<vector> #include<string> #include<
劍指offer-把數組排成最小的數
code 位數 排序 pan 數組 一位 AR 描述 color 題目描述:輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字為321323。 思路:若數組中的數位
面試題:把數組排成最小的數
compare clas 一個 pub tor str 所有 重點 最小 題目描述:輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字為321323。 重點是重寫C
【Java】 劍指offer(45) 把數組排成最小的數
code .com stringbu print ide san blog int urn 本文參考自《劍指offer》一書,代碼采用Java語言。 更多:《劍指Offer》Java實現合集 題目 輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印
【LeetCode & 劍指offer刷題】數組題15:45 把數組排成最小的數
coder 所有 持續更新 nlog courier order tco begin 數字 【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...) 45 把數組排成最小的數 題目描述 輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打
《劍指offer》第四十五題(把數組排成最小的數)
delete pre \n 例如 nbsp strcpy 有一個 expec expect // 面試題45:把數組排成最小的數 // 題目:輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼 // 接出的所有數字中最小的一個。例如輸入數組{3, 32
32.把數組排成最小的數
tor turn com str 代碼 正整數 比較 code 打印 題目描述: ??輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字為321323。 思路分析:
輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數, 列印能拼接出的所有數字的最小的一個。例如輸入{3,32,321,4},則列印最小的數字是 3213234
public class FandMax { public void makeMax(int[] nums){ boolean flag=true; for (int i = 0; i < nums.length; i++) { for (int j = 0; j <
【Java】【演算法練習】輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。
題目描述: 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列 {3,32,321},則打印出這三個數字能排成的最小數字為321323。 解題思路: 解題思路: 比較兩個字串s1 S2的
輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數。打印能拼接出所有數字中最小的一個
style void ole min 一個數 string right public [] 題目: 輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數。打印能拼接出所有數字中最小的一個。 解答: 1 public class Solution { 2 3
410. Split Array Largest Sum 把數組劃分為m組,怎樣使最大和最小
sum lar mil 輸入 examples follow font AS height [抄題]: Given an array which consists of non-negative integers and an integer m, you can spli
6、劍指offer--旋轉數組的最小數字
namespace 數字 log clu 有序 ios end esp offer 題目描述 把一個數組最開始的若幹個元素搬到數組的末尾,我們稱之為數組的旋轉。 輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{3,4,5,1,2}為{1,2,3,4,
SCU - 4441 Necklace(樹狀數組求最長上升子數列)
arranged art 樹狀 max pri nsis names for each cnblogs Necklace frog has \(n\) gems arranged in a cycle, whose beautifulness are \(a_1, a_2,
[華為機試練習題]56.求子數組的最大和
== process ack turn 多個 popu 基礎 ace ava 題目 描寫敘述: 輸入一個整形數組。數組中連續的一個或多個整數組成一個子數組,每一個子數組都有一個和。求全部子數組的和的最大值。 接口 Int GetSub
數組獲取最大值
mat next clas class code app spa var ply 1、apply var arr = [3, 8, 6, 2, 1]; Math.max.apply(null, arr); 2、reduce var arr = [3, 8, 6,
樹狀數組求最大值 (RMQ with Shifts)
art code else pan [1] int space -s article 代碼: #include <iostream> #include <stdio.h> #include <string.h> #include
連續子數組的最大和
println 宋體 for 中間 原來 動態規劃法 family 元素 oid 方法一:舉例分析數組的規律 例如數組{1,-2,3,10,-4,7,2,-5} 分析:循環遍歷數組,初始累加和為0。第一步,和為1.第二步,和為-1;第三步,和小於0,如果用-1加上3