链接:力扣
第一次提交时候的代码:2023-12-13
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode DeleteNode(ListNode head, int val) {
// 当删除的是第一个节点的时候
if(head.val == val){
head = head.next;
return head;
}
var valueList = new List<ListNode>();
valueList.Add(head);
while(head.next != null){
valueList.Add(head.next);
head = head.next;
}
foreach(var item in valueList){
if(item.val == val){
// 当删除的是最后一个节点的时候
if(item == valueList.Last()){
foreach(var item2 in valueList){
if(item2.next == item){
item2.next = null;
}
}
}
foreach(var item2 in valueList){
if(item2.next == item){
item2.next = item.next;
}
}
}
}
return valueList.First();
}
}
代码的提交结果:
总结:分三种情况,删除第一个节点,最后一个节点,中间一个节点。
-----------------------------------------------
第二次提交:
public class Solution {
public ListNode DeleteNode(ListNode head, int val) {
if(head.val==val) return head.next;
var pre = head;
var cur = head.next;
while(cur.val != val){
pre = cur;
cur = cur.next;
}
if(cur.next == null){
pre.next = null;
}
else{
pre.next = cur.next;
}
return head;
}
}