演算法題幹:
實現乙個function,有兩個入參number,key,使得number刪除key位數字之後生成的最小。
示例:輸入
輸出14562,2
14289122,1
9122
89122,2
12210,2
0110,2
0思路:
最優解是刪除出現的第乙個左邊》右邊的數,因為刪除之後高位減小。
具體function如下:
歡迎一起**function
reducenumber
(number, key)
let temp = number.
tostring()
.split(''
);for(
var i =
0; i < key; i++)}
if(equer >=0)
} result = temp;
return result.
join(''
);}console.
log(
reducenumber
(1456912,1
))console.
log(
reducenumber
(1456912,2
))console.
log(
reducenumber
(1456912,3
))console.
log(
reducenumber(11
,2))
console.
log(
reducenumber
(5456912,1
))console.
log(
reducenumber
(5456912,2
))console.
log(
reducenumber
(8917282,2
))
演算法 移掉K位數字使得數值最小
給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。leetcode 解題思路 如果這個數的各個位是遞增的,那麼直接從最後面開始移除一定就是最最小的 如果這個數的位值不是底層的,那麼,盡量移除高位的逆序數字。如果最後變成遞增了之後,k還有的剩,就再從後面移除大的數字...
從一串數字裡刪除k個數字,使得新的那串數字最小
最近接觸一道有趣的演算法題,意思是 給定一串數字,這串數字有可能大於long的最長長度,譬如12542670021,從這串數字中刪除k個數字,使得新數字串在所有可能性結果中最小,那麼應該刪除哪k個數字呢?下面給出思路和 以及 的優化。當然,數字的大小高位影響最大,所以首先考慮的是最高為,即從最左邊開...
刪除K個數字,使剩下的數字串最大
題目 乙個n位的數,去掉其中的k位,問怎樣去掉使得留下來的那個 n k 位的數最大?分析 可以直接用貪心來求解,每次尋找從頭開始的連續遞減序列,刪除遞減序列的最後乙個元素,重複k次,最後剩下的數字串組成的數字最大。比如 13787323 第一次,遞減序列只有1,刪除1,得到3787323 第二次,遞...