19. 删除链表的倒数第 N 个结点
解题思路
链表中结点的数目为 sz,1 <= sz <= 30,0 <= Node.val <= 100,1 <= n <= sz
1.遍历第一次,得到size,并且得到数组listNode
2.遍历第二次,将数组转换为list链表结构
3.输出结果
解题遇到的问题
1.链表的操作方法
1)遍历,转为数组,然后找到相应的值
2)如果是删除某个节点,则需要保存头结点
3)由数组转为链表时,如果想要删除的是头结点,则要考虑目标为null的情况
后续需要总结学习的知识点
1.java中链表的实现代码是如何的?如何实现的add、remove、insert?
2.如果不借用数组转换,可以实现吗?如何实现?
##解法1
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
int size = 0;
ListNode[] nodeArrays = new ListNode[30];
while (head != null) {
nodeArrays[size] = head;
head = head.next;
size++;
}
ListNode result = null;
ListNode headD = null;
for (int i = 0; i < size; i++) {
if (i != size - n) {
if (result == null) {
result = new ListNode(nodeArrays[i].val);
headD = result;
} else {
ListNode temp = new ListNode(nodeArrays[i].val);
result.next = temp;
result = result.next;
}
}
}
return headD;
}
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;
}
}
}