[链表]
来源:互联网 发布:明代宗 知乎 编辑:程序博客网 时间:2024/06/11 04:43
题目:
给定一个单向链表的头结点head,节点的值类型时整型,再给定一个整数pivot
实现一个调整链表的函数,将链表调整为左部分都是小于pivot的节点,中间部分
都是值等于pivot的节点,右边部分都是大于pivot的节点,出这个要求外,对调整后的
节点顺序没有更多的要求
进阶:
-在原问题的要求智商再增加如下两个要求:
在左中右三个部分的内部也做顺序要求,要求每部分的节点从左到右顺序与
原链表中节点的先后顺序一致。
给定一个单向链表的头结点head,节点的值类型时整型,再给定一个整数pivot
实现一个调整链表的函数,将链表调整为左部分都是小于pivot的节点,中间部分
都是值等于pivot的节点,右边部分都是大于pivot的节点,出这个要求外,对调整后的
节点顺序没有更多的要求
进阶:
-在原问题的要求智商再增加如下两个要求:
在左中右三个部分的内部也做顺序要求,要求每部分的节点从左到右顺序与
原链表中节点的先后顺序一致。
-如果链表长度为N,时间复杂度达到O(N),额外空间复杂度请达到O(1)
public class Node{public int value;public Node next;public Node(int dta){this.value = data;}}public Node listPartition1(Node head,int pivot){if (head == null){return head;}Node cur = head;int i = 0;while(cur != null){i++;cur = cur.next;}Node[] nodeArr = new Node[i];i = 0;cur = head;for(i = 0;i != nodeArr.length;i++){nodeArr[i] = cur;cur = cur.next;}arrPartition(nodeArr,pivot);for(i = 1;i != nodeArr.length; i++){nodeArr[i -1].next = nodeArr[i];}nodeArr[i-1].next = null;return nodeArr[0];}public void arrPartition(Node[] nodeArr,int pivot){int small = -1;int big = nodeArr.length;int indedx = 0;while(index != big){if(nodeArr[index].value < pivot){swap(nodeArr,++small,index++);}else if (nodeArr[index].value == pivot){index ++;}else{swap(nodeArr,--big,index);}}}public void swap(Node[] nodeArr, int a, int b){Node tmp = nodeArr[a];nodeArr[a] = nodeArr[b];nodeArr[b] = tmp;}
阅读全文
0 0
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- http请求中没有set-cookie,却产生了jsessionid;tomcat产生两个sessionid,一个是自定义的sessionid(customSessionId),一个是默认的jsess
- 【Codeforces536D】Tavas in Kansas
- 沉浸式的虚化
- Ajax
- 关于使用tp5,执行时碰到mkdir() Permission denied错误
- [链表]
- leetcode 617. Merge Two Binary Trees 深度优先遍历DFS
- Windows如何修改MySQL用户root密码
- Java上传图片到FTP服务器
- 理清tcp/ip,tcp,udp,http,ip,socket等之间的关系和作用。
- Java 大数高精度函数(BigInteger)
- hdoj prerequisites? (水题)
- JSM
- 一分钟 SSM框架集成 swagger