203. 移除链表元素
class Solution {public ListNode removeElements(ListNode head, int val) {ListNode virHead = new ListNode(0, head);ListNode tmp = virHead;while(tmp.next != null){if(tmp.next.val == val){ tmp.next = tmp.next.next;}else{ tmp = tmp.next;}}return virHead.next;}
}
707. 设计链表
class ListNode{int val;ListNode next;public ListNode(){}public ListNode(int val){this.val = val;}public ListNode(int val, ListNode next){this.val = val;this.next = next;}
}class MyLinkedList {int length;ListNode head;public MyLinkedList() {this.head = new ListNode();}public int get(int index) {if(index < 0 || index >= this.length) return -1;ListNode tmp = head;for(int i = 0; i <= index; i++){tmp = tmp.next;}return tmp.val;}public void addAtHead(int val) {this.addAtIndex(0, val);}public void addAtTail(int val) {this.addAtIndex(this.length, val);}public void addAtIndex(int index, int val) {if(index > this.length || index < 0) return;ListNode cur = this.head;for(int i = 0; i < index; i++){cur = cur.next;}ListNode tmp = new ListNode(val, cur.next);cur.next = tmp;this.length += 1;}public void deleteAtIndex(int index) {if(index >= this.length || index < 0) return;ListNode pre = this.head;for(int i = 0; i < index; i++){pre = pre.next;}pre.next = pre.next.next;this.length -= 1;}
}
206. 反转链表
class Solution { //迭代public ListNode reverseList(ListNode head) {ListNode pre = head;if(head == null) return head;ListNode next = head.next;pre.next = null;while(next != null){ListNode nextIter = next.next;next.next = pre;pre = next;next = nextIter;}return pre;}
}class Solution { //递归public ListNode reverseList(ListNode head) {if(head == null || head.next == null) return head;ListNode newHead = reverseList(head.next);head.next.next = head;head.next = null;return newHead;}
}
每天都做点,慢慢也就进步了。不过还是有点畏难情绪,做着做着就偷懒了,慢慢改善吧。