【劍指offer】Q33:把陣列排成最小的數
分析:
假如給定的陣列中的元素是1-9之間的數,我們怎麼來處理呢?比如[ 1,4,7,9,3,8],很簡單,排個序,就是134789。
這裡不同的一點就是,給定的數稍微複雜一點,不再單純的是1位的數,[3,32,321] 這種情況也會出現。我們還想用排序,那麼就需要自己制定下排序規則,也就是比較的標準。
str1和str2 長度相同的比較就不說了,在長度不同的時候,我們將長度短的用最後一位進行補齊。
def strcp(str1, str2): i = 0 j = 0 if len(str1) < len(str2): str1, str2 = str2, str1 d = len(str1) - len(str2) for k in range(d): str2 += str2[-1] return cmp(str1,str2) def mincom(items): re = "" s = sorted(items,cmp = lambda x, y:strcp(x, y), reverse = False) for item in s: re += item return re
相關推薦
【劍指offer】Q33:把陣列排成最小的數
分析: 假如給定的陣列中的元素是1-9之間的數,我們怎麼來處理呢?比如[ 1,4,7,9,3,8],很簡單,排個序,就是134789。 這裡不同的一點就是,給定的數稍微複雜一點,不再單純的是1位的數,[3,32,321] 這種情況也會出現。我們還想用排序,那麼就需要自己制定
【劍指Offer】28連續子陣列的最大和
題目描述 HZ偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了:在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如:{6,
劍指Offer:面試題33——把陣列排成最小的數(java實現)(未完待續)
問題描述: 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。
劍指offer面試題之把陣列排成最小的數
1,問題:輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 2,想法:
【劍指offer】59、隊列的最大值(不熟)
最大值 ber 元素 const 所有 刪除元素 windows 窗口 push_back 題目一 給定一個數組和滑動窗口的大小,請找出所有滑動窗口裏的最大值。例如,{2,3,4,2,6,2,5,1}以及窗口大小3,那麽存在6個滑動窗口,最大值分別為{4,4,6,6,6,5
【劍指offer】求一組資料中最小的K個數
題目:輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 *知識點:Java PriorityQueue 調整新插入元素 轉自 https://www.cnblogs.com/CarpenterLee/p/5488070
【劍指offer】數字在排序陣列中出現的次數
想的是先二分查詢,找到之後再找周圍是否有相同 執行時間:27ms 佔用記憶體:5752k # -*- coding:utf-8 -*- class Solution: def GetNumberOfK(self, data, k): # writ
【劍指Offer】51構建乘積陣列
題目描述 給定一個數組A[0,1,...,n-1],請構建一個數組B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 時間限制:1秒;空間限制:32768K;本題知識點:陣列
【劍指offer】 面試題3 陣列中重複的數字
題目一 找出陣列中重複的數字 在一個長度為n的數組裡的所有數字都在0~n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。例如,如果輸入長度為7的陣列{2,3,1,4,2,5,3} 那麼對應的輸出是重複的數字2或
劍指offer-8- Python實現旋轉陣列的最小數
一、題目描述 二、解法 def minNumberInRotateArray(rotateArray): # write code here p1 = 0 p2 = len(rotateArray)-1 mid = p1
【劍指offer】把陣列排成最小的數【python】
題目描述 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。 思路 使用排序的思想:如果3+321 > 321 + 3那麼說明321應該在3的前面,
【劍指offer】:撲克牌的順序
題目:從撲克牌中隨機抽取5張牌,判斷是不是一個順子,既這5張牌是不是連續的。2-10位數字本身,A為1,J為11,Q為12,K為13,大王和小王可以看出是任何數。 解決思路: 1.把大王和小王看做
【劍指offer】1-10題:C++和Java版
劍指offer 面試題1:賦值運算子函式 題目:如下為型別CMyString 的宣告,請為該型別新增賦值符函式。 class CmyString { public: CmyString(char* pData = nullptr); CmyString(c
【劍指Offer】把陣列排成最小的數
題目連結 題目描述 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。
【劍指offer】面試題2:實現 Singleton 模式
本文目錄: 懶漢式和餓漢式 解法1:只適用於單執行緒環境 (不好) 解法2:雖然在多執行緒環境中能工作,但是效率不高 (不好) 解法3:加同步鎖前後兩次判斷例項是否存在 (可行) 解法4:利用類靜態變數初始化一個例項 (推薦使用) 解法5:靜態內部類實
【劍指offer】面試題14:剪繩子
題目:給你一根長度為 n 繩子,請把繩子剪成m段(m、n都是整數,n>1並且m≥1)。每段的繩子的長度記為k[0]、k[1]、…… 、k[m]。請問 k[0] * k[1] * … * k[m]可能的最大乘積是多少?例如當繩子的長度是8時,我們把它剪成長度分別為2、3、3的三段,此時得
【劍指offer】面試題57(1):和為S的數字
題目 輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 ps: 對應每個測試案例,輸出兩個數,小的先輸出。 思路
【劍指Offer】面試題8:旋轉陣列的最小數字
一:題目描述 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非遞減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。 NOTE:給出的所有元素都大於0,若陣列大
【劍指offer】面試題21:調整陣列順序使奇數位於偶數前面
題目1:輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有奇數位於陣列的前半部分,所有偶數位於陣列的後半部分。 如果不考慮時間複雜度,最簡單的思路應該是從頭掃描這個陣列,每碰到一個偶數時,拿出這個數字,並把位於這個數字後面的所有的數字往前面挪動一位。挪完之後在陣列的末
【劍指offer】面試題20:表示數值的字串
題目:請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串 ”+100”、”5e2”、”-123”、”3.1416”和”-1E-16”都表示數值。 但是”12e”、”1a3.14”、”1.2.3”、”+-5”和”12e+4.3”都不是。