![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
kakabest123
这个作者很懒,什么都没留下…
展开
-
一个01发生器,产生0和1不均匀,怎么设计使得它产生均匀的01序列
1.有一个随机数发生器,能以概率p生成0,以概率1-p生成1,问如何做一个随机数发生器 使得生成0和1的概率相等。 2.用上面那个生成0和1的概率相等的随机数发生器,怎样做一个随机数发生器使得它生成 的数在1…N之间均匀分布。 第一题比较简单,可以用原发生器周期性地产生2个数,直到生成01或者10。 由于生成01和10的概率均为p(1-p),故预先任意指定01为0(或1),10为1(原创 2015-07-26 00:10:06 · 1558 阅读 · 0 评论 -
Java 字符串移位
实现功能:实现字符串的移位操作详述: 例如,“abcdefgh”循环右移5位得到“defghabc”方法一:按位右移(空间复杂度O(1); 时间复杂度O(n*n)) 移动1位:habcdefg 移动2位:ghabcdef 移动3位:fghabcde 移动4位:efghabcd 移动5位:defghabc方法二:按移动位置切片(空间复杂度O(n);时间复杂度O(n)) “abcdefgh”原创 2015-07-22 16:18:47 · 901 阅读 · 0 评论 -
单链表逆序--非递归算法
初始状态: prev = null; head = head; next = head.next;//保证不断链 开始逆序: head.next = prev;//不会断链,next保持在链上(最后一个节点指向null) prev = head; head = next;原创 2015-07-24 15:48:58 · 447 阅读 · 0 评论 -
单链表逆序--递归算法
非递归的单链表逆序比较简单,只需要注意三个问题: 1、保存从单链表上拆下的节点; 2、保存当前在链表上的节点,保证不断链; 3、判断循环结束条件。而基于递归的单链表逆序算法,需要注意两个问题:拆和装 因为本质上递归过程是一个逐层深入、逆序返回的过程,因此,只需要考虑两个条件,即逐层深入时候需要做什么操作和返回过程中需要做什原创 2015-07-24 16:26:15 · 1478 阅读 · 0 评论 -
判断有环的链表相交和第一个公共节点(全面)
最常见的解法: 单链表有公共节点,则必定是Y状而不是X状的。 遍历得到两个链表的长度,长链表长度m,短链表长度n,则长链表先走m-n步,然后两个链表同时逐步遍历,比较是否有相同节点。第二种方法: 将一个链表的表尾指向另一个链表的表头,如果两个链表相交,则会形成环,否则没有环,因此转换成判断是否有环,即通过快指针和慢指针,判断快慢指针是否相等判断是原创 2015-07-24 17:06:46 · 500 阅读 · 0 评论