不定期更新
1)单链表就地逆置Singly LinkedList In-Place Reverse
Node reverseSinglyLinkedList(Node head) {
if(head == null) return head;
Node cur_p = head; // pos pointer
Node next_p = head.next; // pos pointer partner
Node temp = null;
while(next_p != null) { // coin pattern
temp = next_p.next;
next_p.next = cur_p;
cur_p = next_p;
next_p = temp;
}
head.next = null; // make up trivials
return next_p; // new head
}
额外空间O(1)
猴子也能懂:欲改先存,拼车顺风
2)包含min函数的栈Min Stack
要求pop(), push(), min()的时间复杂度O(1)
a)辅助栈for min
Class MinStack extends Stack {
Node top; // Node -- sort of element
Stack ass = new Stack(); // assist...not more
void push(Node rookie) {
if(rookie.val < this.min().val) {
ass.push(rookie);
}
super.push(rookie);
}
Node pop() {
if(top == this.min()) { // ass stored object refs
ass.pop();
}
return super.pop();
}
Node min() {
return ass.top();
}
}
猴子也能懂:
b)Calculational Trick
http://blog.csdn.net/anchor89/article/details/6055412