Leetcode203移除链表元素
题目:
代码:
/**
* Definition for singly-linked list.
* public 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) {
//创建虚拟头节点
ListNode node = new ListNode();
node.next = head;
//创建辅助节点
ListNode tempNode = node;
while (tempNode.next != null){
if (tempNode.next.val == val){
tempNode.next = tempNode.next.next;
}else {
tempNode = tempNode.next;
}
}
return node.next;
}
}
Leetcode206 反转链表
题目:
算法:
如下图:
代码:
/**
* Definition for singly-linked list.
* public 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) {
ListNode current = head;
ListNode newHead = null;
while (current != null) {
ListNode next = current.next;
current.next = newHead;
newHead = current;
current = next;
}
return newHead;
}
}
Leetcode707设计链表
题目:
代码:
class MyLinkedList {
int size;
ListNode head;
public MyLinkedList() {
size = 0;
head = new ListNode(0);
}
public int get(int index) {
if (index < 0|| index >= size){
return -1;
}
ListNode node = head;
for (int i = 0; i <= index; i++){
node = node.next;
}
return node.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;
}
index = Math.max(0, index);
size ++;
ListNode node = new ListNode(val);
ListNode temp = head;
for (int i = 0; i < index; i++){
temp = temp.next;
}
node.next = temp.next;
temp.next = node;
}
public void deleteAtIndex(int index) {
if (index >= 0 && index < size){
size--;
ListNode node = head;
for (int i = 0; i < index; i++){
node = node.next;
}
node.next = node.next.next;
}
}
}
/**
* Your MyLinkedList object will be instantiated and called as such:
* MyLinkedList obj = new MyLinkedList();
* int param_1 = obj.get(index);
* obj.addAtHead(val);
* obj.addAtTail(val);
* obj.addAtIndex(index,val);
* obj.deleteAtIndex(index);
*/