> 文章列表 > 代码随想录day3| 203、707、206

代码随想录day3| 203、707、206

代码随想录day3| 203、707、206

203. 移除链表元素

给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点

class Solution {public ListNode removeElements(ListNode head, int val) {// while(head != null && head.val == val){//     head = head.next;// }// ListNode cur = head;// while(cur != null && cur.next != null){//     if(cur.next.val == val){//         cur.next = cur.next.next;//     }else{//         cur = cur.next;//     }// }// return head;//用虚拟节点ListNode dummNode = new ListNode(-1);dummNode.next = head;ListNode cur = dummNode;while(cur.next != null){if(cur.next.val == val){cur.next = cur.next.next;}else{cur = cur.next;}}return dummNode.next;}
}

707. 设计链表

class MyLinkedList {int size;ListNode head;public MyLinkedList() {size = 0;head = new ListNode(0);}public int get(int index) {if(index < 0 || index >size-1){return -1;}ListNode cur = head;for(int i = 0; i <= index; i++){cur = cur.next;}return cur.val;}public void addAtHead(int val) {addAtIndex(0,val); }public void addAtTail(int val) {addAtIndex(size,val);}public void addAtIndex(int index, int val) {if(index > size){return;}if(index < 0){index = 0;}size++;ListNode cur = head;for(int i = 0; i < index; i++){cur = cur.next;}ListNode add = new ListNode(val);add.next = cur.next;cur.next = add;}public void deleteAtIndex(int index) {if(index < 0 || index >=size){return;}size--;if(index == 0){head = head.next;return;}ListNode cur = head;for(int i = 0; i < index; i++){cur = cur.next;}cur.next = cur.next.next;}
}

206. 反转链表

题意:反转一个单链表。
示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL

class Solution {public ListNode reverseList(ListNode head) {if(head == null || head.next == null){return head;}ListNode cur1 = null;ListNode cur2 = head;while(cur2 != null){ListNode temp = cur2.next;cur2.next = cur1;cur1 = cur2;cur2 = temp;}return cur1;}
}