Re: [問題]n位整數拿掉m數字得到最大數值

作者: nilson847552 (lalala)   2013-11-22 02:27:32
※ 引述《PATRICKSTARS (PatrickStar)》之銘言:
: Given an integer (not necessary a decimal number) with n digits, we want to
: remove m (<=n) digits from this number such that the resulting number is as
: large as possible. Design an O(n) time algorithm to solve it.
: 可以提示如何下手嗎?
從最高位往個位掃
當目前數字 < 下一個
則捨棄目前數字
若下一個沒有數字了
也捨棄目前數字
虛擬碼
int f (int input, int m){
LinkedList l;
//雙向linked list l
//從頭到尾是高位到低位digit
if(m >= l.size)
return 0;
p = l.head ;
while (m > 0){
if (p.next== null || p.value < p.next.value ){
if (p.next==null){
p = p.last;
p.next = null;
}
else{
temp = p.last;
temp.next=p.next;
p=temp;
}
m

Links booklink

Contact Us: admin [ a t ] ucptt.com