
算法
ChillChilling
这个作者很懒,什么都没留下…
展开
-
剑指offer笔记
27.二叉搜索树与双向链表 递归:使用中序遍历,找到最左边的节点(即最小的节点,作为节点头)作为当前头节点,返回,上一节作为当前节点,当前节点指向头节点,头节点也指向当前节点,当前节点作为头节点;递归到右子树最大节点。 循环:使用中序遍历的非递归方法,在第二层循环外调整两个节点相互指向,最后返回第一个节点。 30.栈最小数min函数 引入辅助栈,第一个数入两栈,其余...原创 2018-05-25 15:45:22 · 255 阅读 · 0 评论 -
二分幂和快速幂
对于a^n计算,二者都是为了实现高效率的幂运算,且思路相似。二分幂,当n为偶数时,将a^n分为(a^(n/2))*(a^(n/2));当n为奇数时,将a^n分为(a^((n-1)/2))*(a^((n-1)/2))*a;然后递归计算。快速幂,将n化为二进制,当二进制位为1时,累乘结果,当二进制位为0时,累乘过程;从n的个位开始&1运算,运算结束后,n>>1,思路其实类似二分幂。...原创 2018-05-23 20:36:21 · 1070 阅读 · 0 评论 -
剑指offer66题思路
调整数组顺序,奇数位于偶数前面,奇数、偶数相对位置不变: 原书没有说明相对位置不变,可使用两个指针,一个从头检索,一个从尾检索,奇偶相反则呼唤,知道指针重叠。考虑解藕,程序变为1.判断数字奇偶;2.调整位置。 题目思路:1.使用直接插入,奇数往前移动,偶数位置不动,O(n^2)。 2.拷贝数组,第一次遍历数组,奇数放进去,第二次遍历,偶数放进去,O(...原创 2018-05-24 10:41:31 · 678 阅读 · 0 评论 -
Josehn Ring几种解法
核心是递推公式,n个数,每m-1个出列,最后保留数为f(n,m),f(n,m)=[f(n-1,m)+m]%n。 推导过程参考:http://zhedahht.blog.163.com/blog/static/2541117420072250322938/ /* *实用递推公式递归 *O(1) O(n) */ public static int Solution(int n, int m) {...原创 2018-10-19 20:11:35 · 196 阅读 · 0 评论