java单链表删除重复元素_用加头节点实现链表的删除重复元素、分割、翻转(Java实现)...
1.删除排序链表的重复元素I
1.1题目:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
代码结果:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode p = head;
while(p != null){
if(p.next != null && p.val == p.next.val){
p.next = p.next.next;
}else{
p = p.next;
}
}
return head;
}
}
2.删除排序链表的重复元素II
2.1题目:
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:
输入: 1->1->1->2->3
输出: 2->3
代码结果:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode p = head;
ListNode q = dummy;
boolean isDel = false;
while(p != null){
if(p.next != null && p.val == p.next.val ){
isDel = true;
p.next = p.next.next;
}else{
p = p.next;
if(isDel){
q.next = p;
isDel = false;
}else{
q = q.next;
}
}
}
return dummy.next;
}
}
3.分隔链表:
3.1题目:
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例:
输入: head = 1->4->3->2->5->2, x = 3
输出: 1->2->2->4->3->5
代码结果:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode partition(ListNode head, int x) {
ListNode dummy1 = new ListNode(-1);
ListNode dummy2 = new ListNode(-1);
ListNode p1 = dummy1;
ListNode p2 = dummy2;
while(head != null){
if(head.val < x){
p1.next = head;
p1 = p1.next;
}else{
p2.next = head;
p2 = p2.next;
}
head = head.next;
}
p2.next = null;
p1.next = dummy2.next;
//dummy2.next = null;
return dummy1.next;
}
}
4.翻转链表II:
4.1题目:
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明:
1 ≤ m ≤ n ≤ 链表长度。
示例:
输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL
代码结果:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseBetween(ListNode head, int m, int n) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pre = dummy;
for(int i = 0;i < m -1;i++){
pre = pre.next;
}
ListNode cur = pre.next;
ListNode node = null;
for(int i = 0;i < n - m + 1;i++){
ListNode temp = cur.next;
cur.next = node;
node = cur;
cur = temp;
}
pre.next.next = cur;
pre.next = node;
return dummy.next;
}
}
java单链表删除重复元素_用加头节点实现链表的删除重复元素、分割、翻转(Java实现)...相关推荐
- java 单链表是否有环_数据结构与算法随笔之链表-链表是否有环(二)
上一篇文章我们分析了下链表之反转单向链表,这篇文章我们来分析下另外一个关于链表的经典题目. 判断链表是否有环(在leetcode上的题目地址:环形链表) 题目描述 给定一个链表,判断链表中是否有环 解 ...
- class 第一个元素_第二章(第3节):网页元素定位和操作
大家仔细思考一下,我们用 selenium 操控浏览器是什么意思,其实就是用 selenium 模拟人上网,也就是说人用浏览器能做的任何事情,我们用 selenium 都可以做,selenium 就如 ...
- 为什么python删除不了_为什么python的imp.reload()不会删除旧的类和函数?
我只是认识到imp.reload()不会删除旧的类和函数,如果它们从模块的源文件中删除. 一个例子: :~$ python3 Python 3.2.3 (default, May 3 2012, 15 ...
- JAVA数组首位末位互换_堆和堆傻傻分不清?一文告诉你 Java 集合中「堆」的最佳打开方式...
上一篇的 「Java 集合框架」里,还剩下一个大问题没有说的,那就是 PriorityQueue,优先队列,也就是堆,Heap. 什么是堆? 堆其实就是一种特殊的队列--优先队列. 普通的队列游戏规则 ...
- 数组中的元素赋值给元素_漫画:寻找无序数组的第k大元素
本期封面作者:泰勒太乐 ----- 第二天 ----- 题目是什么意思呢?比如给定的无序数组如下: 如果 k=6,也就是要寻找第6大的元素,这个元素是哪一个呢? 显然,数组中第一大的元素是24,第 ...
- java删除有序数组中的重复元素_算法刷刷刷Leetcode第26题删除排序数组中的重复项...
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组 并在使用 O(1) 额外空间的条件下完成.示例 ...
- python去掉重复内容并按原来次序输出元素_在Python中,从列表中删除重复项以使所有元素在保留顺序时都是唯一的最快的算法是什么?...
饮歌长啸 使用方法:lst = [8, 8, 9, 9, 7, 15, 15, 2, 20, 13, 2, 24, 6, 11, 7, 12, 4, 10, 18, 13, 23, 11, 3, 11 ...
- python添加重复元素_在Python 3.6中添加迭代时重复元素
我正在尝试编写一部分代码,该代码从两个不同的列表中获取元素并进行匹配,如下所示,但是由于某种原因,我一直在输出列表中重复获取元素. def assign_tasks(operators, reques ...
- java 链表放置结构体_结构体和它在链表中的使用
一.结构体 由不同类型的数据组合成一个整体,以便引用,这些组合在一个整体中的数据是互相联系的. 1.1如何声明结构体呢? struct 结构体名 //结构体名字用作结构体类型的标志 {成员列表}; ...
- mysql批量删除重复数据库_建站经验:sql语句快速删除重复内容之我见
很多站长对于各种开源程序在php空间运行之后,喜欢去做一些二次开发的事情,但是遇到自己建数据库表,由于自己本身对数据库研究不是很彻底,所以在建表的时候没有设置为联合唯一索引,这样会导致我们存储的信息或 ...
最新文章
- 编写程序,输出所有3位数的水仙花数
- 【Android Studio快捷键】之导入对应包声明(import packages)
- 写给计算机的大学生!
- 人脸识别三大经典算法_人脸识别系列四 | DeepID1算法
- C#LeetCode刷题之#58-最后一个单词的长度(Length of Last Word)
- LeetCode Number of Digit One
- RHCE学习12LVS负载均衡详解
- Anbox之android OpenGLES模拟器设计(八)
- 微服务架构设计的简单理解
- h5应用 vue 钉钉_快速上手——钉钉H5微应用开发接入
- idea 开源申请授权到期怎么办
- c4dr20怎么安装oc渲染器怎么安装_c4d怎么安装oc渲染器/插件
- 工业4.0时代,怎样为孩子筹备未来教育?
- 运行bat时隐藏cmd窗口的方法(bat隐藏窗口 隐藏运行bat文件)
- Oracle ORA-28000 the account is locked
- Python之判断闰年
- 软件开发团队必备管理工具
- Android 自定义View实现翻棋游戏
- python摄像头看图识字_《看图识字》小程序开发小结
- 使用make latexpdf, 报错The font “SourceHanMonoSC-Regular“ cannot be found.但是这个字体实际上已经安装了。