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;
}
}

最新文章

  1. dedecms 按权重排序不准或BUG的处理方法
  2. Java自定义一个字典类(Dictionary)
  3. reactjs入门到实战(二)---- jxs详解
  4. mina socket底层主流程源码实现
  5. AFNetworking 2.0 来了
  6. Raid1源代码分析--读流程
  7. 让footer在底部(测试它人方法)
  8. Erlang千万级用户游戏框架(Openpoker)源码文件分析清单
  9. atexit模块解析
  10. 我展示了视频采集前端vfe和camera,decode等交互驱动的体系结构
  11. 重新认识JavaScript里的数据类型
  12. tpcc-mysql安装
  13. 初步研究一下sourceTree
  14. ATL右键文件菜单
  15. Bootstrap -- 下拉菜单、输入框组、导航菜单
  16. 修改vim的颜色主题 及显示行号
  17. mysql 更新条件为查询出的结果
  18. IDEA多线程下多个线程切换断点运行调试的技巧
  19. Linux Shell脚本中获取本机ip地址方法
  20. Rob Whitfield:银行已准备好避免下一场金融危机的爆发

热门文章

  1. iWebShop产品功能技术优势有什么?
  2. 用bootstrap框架弄的网站。(首页)
  3. python中的数据类型之元组和字典
  4. uva 508 - Morse Mismatches(摩斯码)
  5. Spring + MySQL + Mybatis + Redis【二级缓存】
  6. C# static const和readonly区别
  7. luogu2387 [NOI2014]魔法森林
  8. 失败的尝试,使用继承扩展数组,以及ES6的必要性
  9. Assetbundle1
  10. pip消失后复原