java——删除链表中等于给定值的所有元素
class ListNode{
int val ;
ListNode next;
public ListNode(int x) {
val = x;
}
public ListNode(int[] arr) {
if(arr == null || arr.length == 0) {
throw new IllegalArgumentException("ARR CAN NOT BE EMPTY");
}
val = arr[0];
//这个this是指实现这个内部类的对象
ListNode cur = this;
for(int i = 1 ; i < arr.length ; i ++) {
cur.next = new ListNode(arr[i]);
cur = cur.next;
}
}
public String toString() {
StringBuilder res = new StringBuilder();
ListNode cur = this;
while(cur != null) {
res.append(cur.val + "->");
cur = cur.next;
}
res.append("NULL");
return res.toString();
}
}
public class Main {
public static void main(String[] args) {
int[] nums = {1,2,4,3,6,4,2};
ListNode head = new ListNode(nums);
System.out.println(head);
ListNode node = removeElement(head, 2);
System.out.println(node);
}
//不设头节点
public static ListNode removeElement(ListNode head, int val) {
//删除开始部分的节点
while(head != null && head.val == val) {
head = head.next;
}
if(head == null) {
return head;
}
//删除中间部分的节点
ListNode prev = head;
while(prev.next != null) {
if(prev.next.val == val) {
prev.next = prev.next.next;
}else {
prev = prev.next;
}
}
return head;
}
}
java——删除链表中等于给定值的所有元素的更多相关文章
- 删除链表中等于给定值val的所有节点。
样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5. /** * D ...
- 删除数组中等于某个key的所有元素
题目描述: 给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度. 这道题目做暴力的想法就是,用一个指针从头到尾遍历,删除哪个元素就把后面的元素统一向前移动一个位置.但是这样的时间复杂度很 ...
- 删除链表中的倒数第n个元素
示例: 输入链表:1->2->3->4->5 , 2 输出:1->2->3->5 Python解决方案1: # Definition for singly-l ...
- LeetCode:删除链表中的节点【203】
LeetCode:删除链表中的节点[203] 题目描述 删除链表中等于给定值 val 的所有节点. 示例: 输入: 1->2->6->3->4->5->6, val ...
- 203 Remove Linked List Elements 删除链表中的元素
删除链表中等于给定值 val 的所有元素.示例给定: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6返回: 1 --& ...
- lintcode:删除链表中指定元素
题目 删除链表中等于给定值val的所有节点. 样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1-> ...
- 【leetcode 简单】 第五十七题 删除链表中的节点
删除链表中等于给定值 val 的所有节点. 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4 ...
- 【Java】 剑指offer(18) 删除链表中重复的结点
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重 ...
- 链表:删除链表中重复的结点(java实现)
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...
随机推荐
- Python 网络爬虫 008 (编程) 通过ID索引号遍历目标网页里链接的所有网页
通过 ID索引号 遍历目标网页里链接的所有网页 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 Python 的集成开发环境:PyChar ...
- 添加超级链接为什么用a标签
a是anchor的简写,中文意思是锚点,而锚点的引申意思是连接,link已经被html占用了,只能用a来表示连接了.
- Luogu 3205 [HNOI2010]合唱队
初赛滚粗的我含着眼泪写代码…… 设$f_{l, r, 0/1}$表示$[l, r]$的区间的队伍排列好,且最后一个插进去的在左边$(0)$/右边$(1)$的方案数,那么有初态$f_{i, i, 0} ...
- 形式化验证工具(PAT)Perterson Algorithm学习
今天学习一下Perterson Algorithm. 这个算法是使用三个变量来实现并发程序的互斥性算法. 具体看一下代码: Peterson算法是一个实现互斥锁的并发程序设计算法,核心就是三个标志位是 ...
- Laradock使用教程(新手版)
Laradock使用教程 背景 最近我们公司把开发环境从windows系统换到了Ubuntu系统.用windows系统的时候,我们一般用phpStudy集成环境的比较多.换到Linux环境下,我们选择 ...
- 自己封装一个MySignal函数,方便以后直接copy.
传统的signal可能会有信号未决或者信号重入或多或少的问题,毕竟这个函数已经很多年了. 所以推荐使用sigaction函数,但是sigaction函数相对signal较为复杂,而且每次要写一大堆.因 ...
- Spring 第一个程序-Bean的定义和注册
定义一个实现接口的方法 创建xml文件,这个xml文件就是个所谓的容器 不使用spring容器和使用spring容器创建对象执行代码的区别如下: 下面说一下ApplicationC ...
- github分支管理
一. 需要创建的分支 1.master 主分支 2.dev 开发分支 3.bug 修改bug分支 4.release 预发布分支 二.分支使用 1.在master上创建dev,bug,release分 ...
- c语言 参数传值和传地址
static void TestCharP(char **p) { char *q = "ssssss"; *p=q; } static void TestCharP1(char ...
- 双击获取GridView控件行信息
有网友要求在GridView控件上,不管是单击(onclick)还是双击(ondblclick),想获取所击行的信息.技术难度是为GridView的行注册单击或是双击事件.看例子吧:在数据库中创建数据 ...