刪除k個數字使剩下數字最小(大)

2021-09-02 20:01:42 字數 533 閱讀 5493

如:1593121212去掉3個數,剩下1121212最小。

思路如下:

刪除k個,可以採用貪心演算法,每次刪除1個

那麼每次刪哪乙個呢?

此時我們已經能看出:

要求剩下的數字最小,從左向右掃瞄,找出連續的非嚴格遞增串,刪除最後乙個

要求剩下的數字最大,從左向右掃瞄,找出連續的非嚴格遞減串,刪除最後乙個。

核心**如下:

public

static

intdelkdigits

(int number,

int k,

int max_or_min)

int n =0;

for(

int m =

0;m < digits.length;m++)}

digits = digitsnew;

}int result =

getint

(digits)

;return result;

}

刪除K個數字,使剩下的數字串最大

題目 乙個n位的數,去掉其中的k位,問怎樣去掉使得留下來的那個 n k 位的數最大?分析 可以直接用貪心來求解,每次尋找從頭開始的連續遞減序列,刪除遞減序列的最後乙個元素,重複k次,最後剩下的數字串組成的數字最大。比如 13787323 第一次,遞減序列只有1,刪除1,得到3787323 第二次,遞...

刪除 k 個元素,使剩下的數字最小(單調棧)

給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。注意 num 的長度小於 10002 且 k。num 不會包含任何前導零。示例 1 輸入 num 1432219 k 3 輸出 1219 解釋 移除掉三個數字 4,3,和 2 形成乙個新的最小的數字 1219。示例...

最小的k個數字

題目 輸入n個整數,找出其中最小的k個數。例如輸入4 5 1 6 2 7 3 8這8個數字,則最小的4個數字是1 2 3 4。方法一 根據陣列特點找出時間複雜度為o n 的演算法 include includeusing namespace std int randomofrange int sta...