題目描述
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。
思路:養成好習慣,一旦有鍊錶作為形參傳遞,都要對鍊錶是否為空做判斷,防止空指標異常,至於怎麼處理,稍後會講。當鍊表都不為空時,比較兩個鍊錶的頭結點值的大小,較小者作為新的頭結點儲存,(不妨設較小的頭結點來自list1)然後list1的下乙個結點作為list1的乙個新的頭結點與list2的頭結點比較,…,像是乙個遞迴操作。遞迴出口:當乙個鍊錶為空時結束,然後此時直接返回不為空的鍊錶的剩下的結點(這裡對鍊錶為空的處理做了說明,即當list1為空時,返回list2;反之,返回list1)。
牛客網oj**如下:
public
class solution
}*/public
static listnode merge(listnode list1,listnode list2)
else
return pmergehead;
}/*public
static
void printlsit(listnode head)
}public
static
void main(string args)
}list2.add(new listnode(2));
list2.add(new listnode(4));
list2.add(new listnode(6));
for(int i=0;iif(i+1
1); }
}printlsit(merge(list.get(0),list2.get(0)));
}*/}
非遞迴做法,也要熟悉
public
class solution else
mergelist=curnode;
while(list1 != null && list2 != null)else
}if(list1!=null)curnode.next=list1;
if(list2!=null)curnode.next=list2;
return mergelist;
}}
劍指offer 面試題17
題目 合併兩個排序的單向鍊錶 自己所寫 如下 listnode mergesortedlists listnode phead1,listnode phead2 listnode mergetwolist listnode pfirst,listnode psecond if phead pnext...
劍指offer之面試題9 4 矩形覆蓋
題目描述 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?思路 用數學歸納的思想分析,得出規律。牛客網提交 public class solution if target 2 return init target int...
劍指offer之面試題16 反轉鍊錶
題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。思路 借助圖形來分析一下反轉鍊錶需要改變哪些指標。假設某一時刻,經過若干操作,我們已經把h點之前的指標調整完畢,現在反轉i指標指向的結點。由圖可知,為了防止指標的斷開,需要儲存i的next指標,為了完成反轉,需要知道i的前乙個指標prev,當然...