java链表算法题一
来源:互联网 发布:js获取index 编辑:程序博客网 时间:2024/06/04 00:26
题目描述
编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前
给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。
解答如下:
import java.util.*;/*** 单向链表节点类*/class ListNode { int val; //链表节点中的值 ListNode next = null; //下一个节点引用 ListNode(int val) { this.val = val; }}/*** 算法实现类*/public class Partition { public ListNode partition(ListNode pHead, int x) { if(pHead!=null&&pHead.next==null)return pHead; ListNode endNode = pHead; int size = 1; //链表的节点个数 while(endNode.next!=null){ endNode = endNode.next; size++; } ListNode startNode = pHead; ListNode pointNode = null; int j = 1; //遍历节点的计数器 while((startNode!=null)&&(j<=size)){ //头节点大于x的情况 if((startNode == pHead) && startNode.val>=x){ pHead = pHead.next; endNode.next = startNode; startNode.next = null; endNode = endNode.next; startNode = pHead; pointNode = startNode; j++; }else if(startNode.val<x){ //节点小于x的处理方式 pointNode = startNode; startNode = startNode.next; j++; }else if((startNode != pHead) && startNode.val>=x){ //非头节点大于x的情况 endNode.next = startNode; pointNode.next = startNode.next; startNode.next = null; startNode = pointNode.next; endNode = endNode.next; j++; } } return pHead; }}
算法学习,贵在坚持。
炼心问道,砥砺前行!
阅读全文
0 0
- java链表算法题一
- Java 算法题 一
- JAVA经典算法,每日一题
- Java经典算法题(一)
- Java算法(一)
- JAVA 算法(一)
- java数据结构及算法一
- Java实现排序算法(一)
- java算法每日一练
- Java 普通算法研究一
- 排序算法JAVA实现一
- java小算法(一)
- Java内排序算法一
- java实现排序算法一
- Java经典算法(一)
- Java经典算法(一)
- Java八大排序算法(一)
- java经典算法(一)
- Ansible2:主机清单
- redis安装补充
- 莱特币与比特币的区别
- Hibernate总结
- 原型链及作用域知识图解
- java链表算法题一
- cloudnote_yanshijun
- springboot对于redis的增删改查
- 69. Sqrt(x)
- java多线程小结
- (项目笔记) 相对路径、绝对路径以及虚拟路径
- [阿里云] Linux CentOS 7.3 环境下安装 MySql5.7 全程讲解以及常见问题的解决方法
- 常见的DOS命令
- Django 开发学习笔记(8)- 开发表单页面,让用户添加内容