方法很笨拙,被链表给绕住了,抽空在整理一下。

/**
* Definition for ListNode
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/ public class Solution {
/**
* @param head: a ListNode
* @param val: An integer
* @return: a ListNode
*/
public ListNode removeElements(ListNode head, int val) {
// write your code here List<Integer> arr = getIndex(head,val);
return removeElements(head, val, arr);
} public static ListNode removeElements(ListNode head, int val, List<Integer> indexList) { ListNode result = head;
int i =0;
for (Integer index : indexList) {
result = deleteNode(result, index - i);
i++;
} return result; } public static ListNode deleteNode(ListNode head, int index){ //删除链表中的第一个元素
if(index==0){
head=head.next;
return head;
}
int i=1;
ListNode preNode=head;
ListNode curNode=preNode.next;
while(curNode!=null){
if(i==index){
preNode.next=curNode.next;
break;
}
preNode=curNode;
curNode=curNode.next;
i++;
}
return head;
} public static List<Integer> getIndex(ListNode head, int val){ List<Integer> arr = new ArrayList<Integer>();
if(head == null){
return arr;
}
int i = 0; if(head.val == val) {
arr.add(i);
}
ListNode curNode = head.next;
i = 1;
while (curNode != null) { if(curNode.val == val) {
arr.add(i);
}
curNode = curNode.next; i++;
} return arr;
}
}

C# 写法

        public static LinkNode GetLinkNode(LinkNode head, int val)
{
LinkNode result = head;
while (result.Val == val)
{
result = result.Next;
} LinkNode preNode = result;
LinkNode curNode = preNode.Next; while (curNode != null)
{
if (curNode.Val == val)
{
preNode.Next = curNode.Next;
} preNode = curNode;
curNode = curNode.Next;
} return result;
}

LintCode #452 删除链表中的元素的更多相关文章

  1. LintCode之删除链表中的元素

    题目描述 我的代码 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode n ...

  2. lintcode:删除链表中指定元素

    题目 删除链表中等于给定值val的所有节点. 样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1-> ...

  3. 【LintCode】删除链表中的元素

    问题分析: 声明当前指针和上一个指针即可. 问题求解: public class Solution { public ListNode removeElements(ListNode head, in ...

  4. 203 Remove Linked List Elements 删除链表中的元素

    删除链表中等于给定值 val 的所有元素.示例给定: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6返回: 1 --& ...

  5. [LintCode]删除链表中的元素

    问题分析: 声明当前指针和上一个指针即可. 问题求解: public class Solution { public ListNode removeElements(ListNode head, in ...

  6. LeetCode Delete Node in a Linked List (删除链表中的元素)

    题意:给一个将要删除的位置的指针,要删除掉该元素.被删元素不会是链尾(不可能删得掉). 思路:将要找到前面的指针是不可能了,但是可以将后面的元素往前移1位,再删除最后一个元素. /** * Defin ...

  7. 删除链表中的元素 · Remove Linked List Elements

    [抄题]: Remove all elements from a linked list of integers that have value val. ExampleGiven: 1 --> ...

  8. SDUT OJ 数据结构实验之链表七:单链表中重复元素的删除

    数据结构实验之链表七:单链表中重复元素的删除 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem ...

  9. SDUT-2122_数据结构实验之链表七:单链表中重复元素的删除

    数据结构实验之链表七:单链表中重复元素的删除 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 按照数据输入的相反顺序(逆 ...

随机推荐

  1. 服务器搭建5 Samba实现文件共享

    Samba服务器工作原理 客户端向Samba服务器发起请求,请求访问共享目录,Samba服务器接收请求,查询smb.conf文件,查看共享目录是否存在,以及来访者的访问权限,如果来访者具有相应的权限, ...

  2. bash shell(4):读取文件大小,移动文件,复制文件,字符串转数字

    下面是代码:注意: 1.if [ expression ],表达式两边需要空格 2.a=$[aa],字符串转为int类型 3.赋值的时候不能有空格 #!/bin/shell fn="file ...

  3. Django套用现成模板,导入css,js,images等文件

    https://blog.csdn.net/mildddd/article/details/79557803

  4. WPF学习笔记(2)——动画效果按钮变长

    说明(2017-6-12 11:26:48): 1. 视频教程里是把一个按钮点击一下,慢慢变长: 注意几个方面: (1)RoutedEvent="Button.Click",这里面 ...

  5. C++中的new、operator new与placement new

    转:http://www.cnblogs.com/luxiaoxun/archive/2012/08/10/2631812.html new/delete与operator new/operator ...

  6. Android开发之获取手机SIM卡信息

    TelephonyManager是一个管理手机通话状态.电话网络信息的服务类.该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于訪问有关设 ...

  7. am335x u-boot2011.09 SPL 流程跟踪

    跟踪一下 u-boot 2011.09 MLO在 nandflash 下运行的流程 首先,直接进入 start.S // arch/arm/cpu/armv7/start.S 36 .globl _s ...

  8. Struts2 使用基本流程

    使用流程: 1.引入Struts 2的库文件: 将"common-logging-1.0.4.jar"."freemaker-2.3.8.jar"." ...

  9. TCP和UDPsocket中SO_SNDBUF和SO_RCVBUF_转

    1.Background Winsock kernel buffer To optimize performance at the application layer, Winsock copies ...

  10. 华为路由器GRE配置

    1. 协议简介 gre(generic routing encapsulation,通用路由封装)协议是对某些网络层协议(如ip 和ipx)的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议 ...