問題:
實現單鏈表反轉
答案:鍊錶準備
class node
public int getdata()
public void setdata(int data)
public node getnext()
public void setnext(node next)
}
public static void main(string args)
// 呼叫反轉方法
head = reverse(head);
system.out.println("\n**************************");
// 列印反轉後的結果
while (null != head)
}
遞迴反轉法:在反轉當前節點之前先反轉後續節點。這樣從頭結點開始,層層深入直到尾結點才開始反轉指標域的指向。簡單的說就是從尾結點開始,逆向反轉各個結點的指標域指向
private static node reverse1(node head)
node rehead = reverse1(head.getnext());
head.getnext().setnext(head);
head.setnext(null);
return rehead;
}
遍歷反轉法:遞迴反轉法是從後往前逆序反轉指標域的指向,而遍歷反轉法是從前往後反轉各個結點的指標域的指向
private static node reverse2(node head)
node pre = head;
node cur = head.getnext();
node temp;
while (cur!=null)
head.setnext(null);
return pre;
}
演算法系列 單鏈表
public class linkedlist else size 插入方法 public void add int index,e e this.top.addnewnode index,newnode size 修改方法 public void set int index,e e 刪除方法 pu...
樹演算法系列之三 GBDT
gbdt與提公升樹有非常密切的關係。為方便閱讀本文,可以先參考提公升樹一文。在提公升樹一文中,我們提到每一輪迭代,都是去擬合上一輪的 殘差 如果用乙個簡單的公式表示就是yi fm 1 x y i f x yi fm 1 x gbdt與上面普通提公升樹的不同在於,其擬合的不是殘差,而是梯度下降的方向。...
演算法系列之三 歸併排序
歸併排序是分治演算法的另乙個典型的體現。與快速排序一樣,它依賴資料之間的比較進行排序。其缺點是需要額外的空間來輔助排序的過程。這使得歸併排序的實用性大大降低,因為在日常的應用中,使用歸併排序的場景都可以使用快速排序來替代。但是它的優點是可以按照預期來切分陣列,每一次都可以對半分,這樣不會出現因為分割...