思路:把原整數的所有數字從左向右比較,如果發現某一位數字大於它右邊的數字,那麼在刪除該數字後,必定回使該數字的的值降低
以遍歷數為外迴圈,以k作為內迴圈,使用棧的特性,讓所有數字乙個個入棧,當某個數字需要刪除時,讓數字出棧,最後,把棧的內容轉化為字串結果
/**
* 刪除調整數的k個值後,或得刪除後的最小值
* 思路:把原整數的所有數字從左向右比較,如果發現某一位數字大於它右邊的數字,那麼在刪除該數字後,必定回使該數字的的值降低
* 以遍歷數為外迴圈,以k作為內迴圈,使用棧的特性,讓所有數字乙個個入棧,當某個數字需要刪除時,讓數字出棧,最後,把棧的內容轉化為字串結果
* 時間複雜度:只對所有數字遍歷了一次,遍歷的時間複雜度是o(n),把棧轉化為字串的時間複雜度也是o(n),所以整個時間複雜度是o(n)
* 空間複雜度:程式中利用棧來回溯遍歷的數字和刪除數字,所以程式的空間複雜度是o(n)
*/public class removekdigists
stack[top++] = c;
}//找到棧中第乙個非零數字的位置,以此構建新的整數字串
int offset = 0;
while (offset < newlength && stack[offset] == '0')
return offset ==newlength ?"0":new string(stack,offset,newlength - offset);
}public static void main(string args)
}
刪去k個數字後的最小值
參考 程式設計師小灰 substring 方法返回字串的子字串。語法public string substring int beginindex 或public string substring int beginindex,int endindex 引數beginindex 起始索引 包括 索引從...
刪除k個數字後的最小值 貪心演算法 Python
一 題目描述 給出乙個整數,從該整數中去除k個數字,要求剩下的數字形成的新整數盡可能小。如 1593212,刪除3個數字後的,新整數的最小情況是1212 30200,刪除乙個數字,新整數的最小情況是200 二 解題思路 這個題可以用貪心演算法來解,每次求出刪除乙個數字後,讓剩下數字形成的新整數達到最...
每k個數的最大最小值 (單調佇列)
有n個數,每次向右移動一位,每k個數輸出最大值最小值。題目鏈結 單調佇列,求最大值的時候佇列裡儲存下降序列的下標,求最小值的時候,儲存上公升序列的下標。每次輸出隊首。如果佇列裡的數的個數多於k個,就彈出隊首。pragma warning disable 4996 include include in...