- 浏览: 778522 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
萨琳娜啊:
Java读源码之Netty深入剖析网盘地址:https://p ...
Netty源码学习-FileRegion -
飞天奔月:
写得有趣 ^_^
那一年你定义了一个接口 -
GoldRoger:
第二个方法很好
java-判断一个自然数是否是某个数的平方。当然不能使用开方运算 -
bylijinnan:
<script>alert("close ...
自己动手实现Java Validation -
paul920531:
39行有个bug:"int j=new Random ...
java-蓄水池抽样-要求从N个元素中随机的抽取k个元素,其中N无法确定
public class CopySpecialLinkedList { /** * 题目:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表? 拷贝pNext指针非常容易,所以题目的难点是如何拷贝pRand指针。 假设原来链表为A1 -> A2 ->... -> An,新拷贝链表是B1 -> B2 ->...-> Bn。 为了能够快速的找到pRand指向的节点,并把对应的关系拷贝到B中。我们可以将两个链表合并成 A1 -> B1 -> A2 -> B2 -> ... -> An -> Bn。 从A1节点出发,很容易找到A1的pRand指向的节点Ax,然后也就找到了Bx,将B1的pRand指向Bx也就完成了B1节点pRand的拷贝。依次类推。 当所有节点的pRand都拷贝完成后,再将合并链表分成两个链表就可以了。 */ public static void main(String[] args) { int[] data = { 1, 2, 3, 4, 5 }; SpecialLinkList sList = new SpecialLinkList(); SpecialLinkList.Node source = sList.create(data); sList.pRand(0, 4);//add 'pRand' sList.pRand(1, 3); sList.pRand(2, 0); sList.pRand(3, 2); sList.pRand(4, 1); sList.print(source); SpecialLinkList.Node dest = sList.copyPNext(source); sList.copyPRand(dest, source); sList.print(dest); } } class SpecialLinkList { private Node head; class Node { int val; Node pNext; Node pRand; Node(int val) { this.val = val; } } public Node copyPNext(Node source) { Node pre = null;// previous node Node dest = null;// destination node while (source != null) { int val = source.val; Node cur = new Node(val);// current node if (pre == null) { pre = cur; dest = pre; } else { pre.pNext = cur; pre = cur; } source = source.pNext; } return dest; } public Node copyPRand(Node dest, Node source) { Node a = source; Node b = dest; // create a1-b1-a2-b2... while (a != null && b != null) { Node tmp = a.pNext; a.pNext = b; a = b; b = tmp; } // copy pRand a = source; b = a.pNext; while (a.pNext != null) { Node tmp = a.pNext.pNext; b.pRand = a.pRand.pNext; if (tmp == null) { break; } a = tmp; b = a.pNext; } // split a1-b1-a2-b2... to a1-a2...,b1-b2.... a = source; b = source.pNext; dest = b; while (a.pNext.pNext != null) { Node tmp = a.pNext.pNext; a.pNext = tmp; a = tmp; tmp = b.pNext.pNext; b.pNext = tmp; b = tmp; } a.pNext = null; b.pNext = null; return dest; } // create a linked list.Insert from tail. public Node create(int[] data) { if (data == null || data.length == 0) { return null; } Node tail = null; for (int len = data.length, i = len - 1; i >= 0; i--) { Node tmp = new Node(data[i]); tmp.pNext = tail; tail = tmp; } head = tail; return head; } // create 'pRand' between posX and posY public void pRand(int posX, int posY) { if (posX < 0 || posY < 0) { return; } Node nodeX = getNodeAt(posX); Node nodeY = getNodeAt(posY); if (nodeX != null && nodeY != null) { nodeX.pRand = nodeY; } } // get the node at the specific position.The position starts from 0. public Node getNodeAt(int pos) { if (pos < 0) { return null; } if (head == null) { return null; } Node node = head; while (node != null && pos > 0) { node = node.pNext; pos--; } return node; } //print the special linked list,like 1(5)-2(4)-3(1)-4(3)-5(2).'5' is the pRand of '1',and so on. public void print(Node node) { while (node != null) { System.out.print(node.val + ""); if (node.pRand != null) { System.out.print("(" + node.pRand.val + ")-"); } node = node.pNext; } System.out.println(); } }
发表评论
-
二维数组(矩阵)对角线输出
2014-04-28 17:55 4603/** 二维数组 对角线输出 两个方向 例如对于数 ... -
bitmap求哈密顿距离-给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(
2012-12-27 21:12 2890import java.util.Random; / ... -
百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序
2012-12-21 18:17 4051import java.util.Arrays; ... -
有一个数组,每次从中间随机取一个,然后放回去,当所有的元素都被取过,返回总共的取的次数。写一个函数实现。复杂度是什么。
2012-12-07 14:32 3546import java.util.Random; i ... -
单调队列-用一个长度为k的窗在整数数列上移动,求窗里面所包含的数的最大值
2012-11-11 22:32 2303import java.util.LinkedList; ... -
据说是2012年10月人人网校招的一道笔试题-给出一个重物重量为X,另外提供的小砝码重量分别为1,3,9。。。3^N。 将重物放到天平左侧,问在两边如何添加砝码
2012-10-28 23:41 1920public class ScalesBalance { ... -
java-并查集(Disjoint-set)-将多个集合合并成没有交集的集合
2012-04-28 00:02 8316import java.util.ArrayList; ... -
java-写一函数f(a,b),它带有两个字符串参数并返回一串字符,该字符串只包含在两个串中都有的并按照在a中的顺序。
2012-04-17 19:50 3447public class CommonSubSeque ... -
java-同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待
2012-04-14 15:39 2296public class PC { /** ... -
java-两整数相除,求循环节
2012-04-14 13:52 4600import java.util.ArrayList; ... -
java-颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I
2012-04-14 10:27 3940public class ReverseWords { ... -
java-谷歌面试题-给定一个排序数组,如何构造一个二叉排序树
2012-04-12 11:10 4338import java.util.LinkedList; ... -
java-谷歌面试题-设计方便提取中数的数据结构
2012-04-12 10:10 2104网上找了一下这道题的解答,但都是提供思路,没有提供具体实现。其 ... -
java-腾讯暑期实习生-输入一个数组A[1,2,...n],求输入B,使得数组B中的第i个数字B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]
2012-04-08 23:10 3760这道题的具体思路请参看 何海涛的微博:http://weibo ... -
java-给定两个已排序序列,找出共同的元素。
2012-04-06 13:09 2830import java.util.ArrayList; ... -
java-谷歌面试题-给定一个固定长度的数组,将递增整数序列写入这个数组。当写到数组尾部时,返回数组开始重新写,并覆盖先前写过的数
2012-03-31 12:16 4984public class SearchInShifte ... -
java-13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。
2012-03-28 22:13 1504import java.util.ArrayList; ... -
java-给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。
2012-03-26 10:59 7618public class DeleteExtraSpa ... -
java实现两个大数相加,可能存在溢出。
2012-03-25 11:08 6657import java.math.BigInteger; ... -
给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数
2012-03-21 22:15 3700import java.util.ArrayList; ...
相关推荐
操作一个链表,链表中的节点有两个指针,一个指向下一个节点, 一个指向下下一个节点,如果下一个节点或者下下一个节点为空,则为null。 操作为插入,删除,修改。 博客:...
57春节7天练---Day-1:数组和链表 数组和链表.pdf
拷贝具有随机指针节点的链表,挂链过程next易混易错,写满了注释。 运行时改包名。
c++笔试题汇总 ...最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:
哈希表--链表 哈希表--链表 哈希表--链表 哈希表--链表哈希表--链表 哈希表--链表哈希表--链表 哈希表--链表哈希表--链表 哈希表--链表哈希表--链表 哈希表--链表
这是一个单向链表,它具有插入与删除节点的功能。Entry类实现了链表的各节点。
课题:设计一个基于链表的数据结构,实现一个简单的学生信息管理系统。 1. 确定课程目标和内容:本课题的目标是让学生掌握链表数据结构的基本原理和应用,培养学生的编程能力和逻辑思维能力。课程内容包括链表的...
用c语言描述的线形表---链表---带头节点单链表的就地逆置
假设以带头结点的循环链表表示一个队列,并且只设一个队尾指针指向尾元素结点(注意不设头指针),试写出相应的置空队、入队、出队的算法。(Java描述)
已知head指向一个带头结点的单向链表, 链表中每个结点包含数据域(data)和指针域(next)。 请编写函数实现如图所示链表逆置
新的解决办法就是在传入的链表前面强行加上一个头节点,并让链表原来的头指针指向该头节点,这样我们就不用判断待移除的节点是否为第一个节点了(因为现在第一个节点就是头节点)。具体思路详解请看拿捏链表(一)--...
003-FreeRTOS202212-4003-链表节点初始化
002-FreeRTOS202212-4001-链表头节点(根节点)初始化
Java 数据结构 链表 Java链表 数据结构链表
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 /** * Definition for singly-linked list. * ...