p402 移掉K位數字

2022-07-09 11:30:17 字數 997 閱讀 1712

移掉k位數字

這個題目寫的時候思路好像不是很清晰,總之最開始思路是 每個元素(cur指向)和它後面一位比較,若是更大,則刪除這一位。 然而忘記了刪除之後,處理指標cur應當後移一位,讓已處理過的元素與當前元素再重新比較來決定取捨。於是拆了東牆補西牆甚至又用乙個指標pre來暫存已處理過的最後乙個結點,很麻煩而且有紕漏導致過綠不了。

最後看題解,發現整體思路沒錯,換成每個元素(cur)指向和它前面一位比較,若是更小,則刪除前一位。 這樣就不用刪除之後再移動cur指標了。。。

以下是不好看的菜雞寫的c++版本:

string removekdigits(string num, int k) 

string::iterator pre=num.begin();

for(string::iterator it=num.begin()+1;it!=num.end()&&k>0;)

else

}if(k>0)

for(string::iterator it=num.begin();it!=num.end();)

else

break;

}if(num.size()==0)

}

def removekdigits(self, num:int, k:int)->str :

stack=

remain=len(num)-k

for digit in num:

while k and stack and stack[-1]>digit:

k-=1

stack.pop()

return ''.join(stack[:remain]).lstrip('0') or '0'

又意識到自己對python的了解程度僅僅停留在語法層面我能看懂但我肯定不會自己寫。。。

402 移掉K位數字

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

402 移掉K位數字

給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。維護乙個單調遞增棧,解決拆開的最值問題 class solution q.offerlast num.charat i for int i 0 i k i stringbuffer sb newstringbuff...

402 移掉K位數字 golang

示例 2 輸入 num 10200 k 1 輸出 200 解釋 移掉首位的 1 剩下的數字為 200.注意輸出不能有任何前導零。示例 3 輸入 num 10 k 2 輸出 0 解釋 從原數字移除所有的數字,剩餘為空就是0。如果下乙個元素比當前棧元素小,移除當前元素,把下乙個元素入棧 10200 k ...