标题代码随想录Day03 | 203.移除链表元素 、 707.设计链表 、 206.反转链表
203.移除链表元素
class ListNode {
int val;
ListNode next;
ListNode() {
}
ListNode(int val) {
this.val = val;
}
ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
class Solution {
public ListNode removeElements(ListNode head, int val) {
if (head == null) {
return null;
}
if (head.next == null) {
if (head.val == val) {
return null;
}
return head;
}
ListNode dummyNode = new ListNode();
dummyNode.next = head;
ListNode cur = dummyNode;
while (cur != null && cur.next != null) {
while (cur.next != null && cur.next.val == val) {
cur.next = cur.next.next;
}
cur = cur.next;
}
head = dummyNode.next;
return head;
}
}
707.设计链表
class MyLinkedList {
int len = 0;
ListNode head;
ListNode dummyNode;
public MyLinkedList() {
head = new ListNode();
dummyNode = new ListNode();
dummyNode.next = head;
}
public int get(int index) {
if (!(index >= 0 && index < len)) {
return -1;
} else {
ListNode temp = head;
for (int i = 0; i < index; i++) {
temp = temp.next;
}
return temp.val;
}
}
public void addAtHead(int val) {
if (len == 0) {
head.val = val;
len++;
} else {
ListNode listNode = new ListNode();
listNode.val = val;
listNode.next = head;
dummyNode.next = listNode;
head = listNode;
len++;
}
}
public void addAtTail(int val) {
if (len == 0) {
addAtHead(val);
} else {
ListNode temp = head;
while (temp.next != null) {
temp = temp.next;
}
ListNode listNode = new ListNode();
listNode.val = val;
temp.next = listNode;
len++;
}
}
public void addAtIndex(int index, int val) {
if (index == len) {
addAtTail(val);
} else if (index == 0) {
addAtHead(val);
} else if (index > 0 && index < len) {
ListNode temp = dummyNode;
for (int i = 0; i < index; i++) {
temp = temp.next;
}
ListNode listNode = new ListNode();
listNode.val = val;
ListNode node = temp.next;
listNode.next = node;
temp.next = listNode;
len++;
}
}
public void deleteAtIndex(int index) {
if (index >= 0 && index < len) {
ListNode temp = dummyNode;
for (int i = 0; i < index; i++) {
temp = temp.next;
}
temp.next = temp.next.next;
len--;
head = dummyNode.next;
}
}
}
206.反转链表
class ListNode {
int val;
ListNode next;
ListNode() {
}
ListNode(int val) {
this.val = val;
}
ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode dummyNode = new ListNode();
dummyNode.next = head;
ListNode p = dummyNode;
ListNode q = head;
ListNode r = q.next;
while (r != null) {
if (q == head) {
q.next = null;
} else {
q.next = p;
}
p = q;
q = r;
r = r.next;
}
q.next = p;
head = q;
return head;
}
}