2.4---把链表划分为两部分(CC150)
注意,题目要求要保持两部分的相对顺序,所以,用交换是不行的。
import java.util.HashSet;
import java.util.Set; class ListNode{
int val;
ListNode next;
ListNode(int x){
val = x;
}
} public class Solution{ public static void main(String[] args){
ListNode head = new ListNode(3);
head.val = 3;
ListNode node = new ListNode(1);
node.val = 1;
head.next = node;
ListNode tmp = head;
while(tmp != null){
System.out.println(tmp.val);
tmp = tmp.next;
}
tmp = partition(head,2);
System.out.println("delete"); while(tmp != null){ System.out.println(tmp.val);
tmp = tmp.next;
}
}
public static ListNode partition(ListNode head, int x) {
//思路:用两个链表记录一下两部分,然后合并
if(null == head)
return head;
ListNode greater = new ListNode(0);//小的
ListNode smaller = new ListNode(0);//>=
ListNode tmp1 = greater;
ListNode tmp2 = smaller; ListNode tmp = head;
while(tmp != null)
{
if(tmp.val < x)
{
ListNode n = new ListNode(tmp.val);
tmp2.next = n;
tmp2 = tmp2.next;//error: not write
}
else
{
ListNode m = new ListNode(tmp.val);
tmp1.next = m;
tmp1 = tmp1.next;//error: not write
}
tmp = tmp.next;//总是忘记写这一步
}
//最后合并
tmp1.next = null;
tmp2.next = greater.next;
return smaller.next;
}
}
2.4---把链表划分为两部分(CC150)的更多相关文章
- lintcode :Partition List 链表划分
题目: 链表划分 给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前. 你应该保留两部分内链表节点原有的相对顺序. 样例 给定链表 1->4->3->2-& ...
- 【LeetCode-面试算法经典-Java实现】【002-Add Two Numbers (单链表表示的两个数相加)】
[002-Add Two Numbers (单链表表示的两个数相加)] 原题 You are given two linked lists representing two non-negative ...
- LeetCode 24. Swap Nodes in Pairs(交换链表中每两个相邻节点)
题意:交换链表中每两个相邻节点,不能修改节点的val值. 分析:递归.如果以第三个结点为头结点的链表已经两两交换完毕(这一步递归实现---swapPairs(head -> next -> ...
- Leetcode算法系列(链表)之两数相加
Leetcode算法系列(链表)之两数相加 难度:中等给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字.如果,我们将 ...
- [LintCode] Swap Two Nodes in Linked List 交换链表中的两个结点
Given a linked list and two values v1 and v2. Swap the two nodes in the linked list with values v1 a ...
- (转)c语言_链表实例讲解(两个经典例子)
建立一个学生成绩的线性链表,对其实现插入,删除,输出,最后销毁. #include <stdio.h>#include <stdlib.h> struct grade { ...
- c语言_链表实例讲解(两个经典例子)
建立一个学生成绩的线性链表,对其实现插入,删除,输出,最后销毁. demo1 // lianbiao.cpp : Defines the entry point for the console app ...
- 牛客网:将两个单调递增的链表合并为一个单调递增的链表-Python实现-两种方法讲解
方法一和方法二的执行效率,可以大致的计算时间复杂度加以对比,方法一优于方法二 1. 方法一: 思路: 1. 新创建一个链表节点头,假设这里就叫 head3: 2. 因为另外两个链表都为单调递增,所 ...
- [LeetCode] 24. Swap Nodes in Pairs ☆☆☆(链表,相邻两节点交换)
Swap Nodes in Pairs 描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 示例: 给定 1->2->3->4, 你应该返回 2->1->4 ...
随机推荐
- asp.net常用函数表
文章转载于[IT花园]:http://www.itgarden.com.cn/showtopic-29.aspx Abs(number) 取得数值的绝对值. Asc(String) 取得字符串表达式的 ...
- asp.net(C#)页面事件顺序
asp.net(C#)页面事件顺序 http://www.cnblogs.com/henw/archive/2012/02/09/2343994.html 1 using System.Data; ...
- Python之路【第十一篇续】前端之CSS补充
CSS续 1.标签选择器 为类型标签设置样式例如:<div>.<a>.等标签设置一个样式,代码如下: <style> /*标签选择器,如果启用标签选择器所有指定的标 ...
- js动态生成表格
动态生成表格 *创建一个页面:两个输入框和一个按钮 *代码和步骤 /* 1.得到输入的行 ...
- 软件安装失败,导致ubuntu软件中心软件消失
感谢百度上各位IT界朋友的帮助,由于某个软件安装失败,导致ubuntu软件中心软件消失的解决办法: 找百度,有人说, 使用命令:sudo apt-get install software-center ...
- linux安装软件通常会做哪些事
一般来说,安装某个包,某个服务,某个软件时,可能会做以下事情(不一定全部) - 在安装目录: /usr/bin, /usr/lib: /usr/you_specified_bin/, /usr/you ...
- linux下如何查看chm文件
转自:http://www.cnblogs.com/jesseZh/p/4036811.html (64位) sudo dpkg -i chmsee_1.3.0-2ubuntu2_amd64.d ...
- virtualBox下面安装linux系统如何共享目录
背景: 系统是win+virtualBox 在虚拟机中安装了linuxMint系统. 如何共享目录呢 第一步: 在虚拟机中安装增强功能 2,在virtualBox中设置共享目录 3,在linux下创建 ...
- Linux服务器管理: 系统的进程管理后台进程的切换和相关命令
1.把进程放入到后台: [root@localhost/]#tar -zcf etc.tar.gz /etc & //这种方法是在后台运行的 [root@localhost ...
- nyoj 14 会场安排问题(贪心专题)java
会场安排问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工 ...