如: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...