LeetCode--Remove Linked List Element
2024-10-06 13:29:46
Remove all elements from a linked list of integers that have value val.
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5
Solution1: 不使用头结点。
注意事项:while停止的条件要特备注意;各种输入情况都要考虑到;如果首节点就是要删除的节点肿么办,等等问题。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode removeElements(ListNode head, int val) {
if(head == null)
return null;
if(head.next==null && head.val==val)
return null;
if(head.next==null && head.val!=val)
return head;
ListNode p = head; while(head.next!=null && head.val==val){
p = head;
head = head.next;
p.next = null;
} p = head;
ListNode q = p.next;
while(p.next!=null){
q = p.next;
if(q.val == val){
p.next = q.next;
q.next = null;
}
else{
p = q;
q = p.next;
}
}
if(head.val==val)//做最后的检查,看是否首节点是要删除的元素
return null;
return head; }
}
Solution2: 使用附加头结点。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode removeElements(ListNode head, int val) {
if(head == null || head.val == val && head.next == null) return null;
ListNode h = new ListNode(-1);
h.next = head;
ListNode p = h;
ListNode q;
while(p.next != null) {
if(p.next.val == val) {
q = p.next;
p.next = q.next;
q.next = null;
}
else
p = p.next;
}
return h.next;
}
}
最新文章
- dedecms 按权重排序不准或BUG的处理方法
- Java自定义一个字典类(Dictionary)
- reactjs入门到实战(二)---- jxs详解
- mina socket底层主流程源码实现
- AFNetworking 2.0 来了
- Raid1源代码分析--读流程
- 让footer在底部(测试它人方法)
- Erlang千万级用户游戏框架(Openpoker)源码文件分析清单
- atexit模块解析
- 我展示了视频采集前端vfe和camera,decode等交互驱动的体系结构
- 重新认识JavaScript里的数据类型
- tpcc-mysql安装
- 初步研究一下sourceTree
- ATL右键文件菜单
- Bootstrap -- 下拉菜单、输入框组、导航菜单
- 修改vim的颜色主题 及显示行号
- mysql 更新条件为查询出的结果
- IDEA多线程下多个线程切换断点运行调试的技巧
- Linux Shell脚本中获取本机ip地址方法
- Rob Whitfield:银行已准备好避免下一场金融危机的爆发