剑指 Offer 06. 从尾到头打印链表https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
Stack<Integer> st = new Stack<>();
while(head != null){
st.push(head.val);
head = head.next;
}
int[] a = new int[st.size()];
int num = 0;
while(!st.empty()){
a[num++] = st.pop();
}
return a;
}
}
//尾插法 + 栈结构
剑指 Offer 24. 反转链表https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode x = head;
ListNode t = null;
while(x != null){
ListNode next = x.next;
x.next = t;
t = x;
x = next;
}
return t;
}
}
剑指 Offer 35. 复杂链表的复制https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof/
/*
// Definition for a Node.
class Node {
int val;
Node next;
Node random;
public Node(int val) {
this.val = val;
this.next = null;
this.random = null;
}
}
*/
//哈希思想
class Solution {
public Node copyRandomList(Node head) {
if(head == null) return null;
Map<Node, Node> mp = new HashMap<>();
Node h = head;
while(h != null){
mp.put(h, new Node(h.val));
h = h.next;
}
h = head;
while(h != null){
mp.get(h).next = mp.get(h.next);
mp.get(h).random = mp.get(h.random);
h = h.next;
}
return mp.get(head);
}
}