随笔分类 -  OptimalSolution

1
摘要:一、100层楼,2个鸡蛋 阅读全文
posted @ 2018-09-14 17:27 BigJunOba 阅读(159) 评论(0) 推荐(0)
摘要:一、有关阶乘的两个问题 二、最大的leftMax与rightMax之差的绝对值 三、路径数组变为统计数组 四、一种字符串和数字的对应关系 五、1到n中1出现的次数 六、数字的英文表达和中文表达 七、分糖果问题 八、设计一个没有扩容负担的堆结构 九、随时找到数据流的中位数 十、在两个排序数组中找到第K 阅读全文
posted @ 2018-09-14 14:41 BigJunOba 阅读(156) 评论(0) 推荐(0)
摘要:一、从5随机到7及其扩展 题目1:给定一个等概率随机产生1~5的随机函数rand1to5: 除此之外,不能使用任何额外的随机机制,请用rand1To5实现等概率随机产生1~7的随机函数random1To7。 解法: 第一步:rand1To5()等概率随机产生1,2,3,4,5 第二步:rand1To 阅读全文
posted @ 2018-09-14 14:41 BigJunOba 阅读(270) 评论(0) 推荐(0)
摘要:一、不用额外变量交换两个整数的值 如果给定整数a和b,用以下三行代码即可交换a和b的值。a = a ^ b; b = a ^ b; a = a ^ b; 二、不用任何比较判断找出两个数中较大的数 问题:给定两个32位整数a和b,返回a和b中较大的。 1.得到a-b的值的符号,如果a-b的值出现溢出, 阅读全文
posted @ 2018-09-14 14:40 BigJunOba 阅读(278) 评论(0) 推荐(0)
摘要:一、布隆过滤器 问题:不安全网页的黑名单包含100亿个黑名单网页,每个网页的URL最多占用64B。现在想要实现一种网页过滤系统,可以根据网页的URL判断该网页是否在黑名单上,如何设计该系统。 要求:允许有万分之一以下的判断失误率;使用的额外空间不能超过30GB 思路:如果把黑名单中所有的URL通过数 阅读全文
posted @ 2018-09-14 14:39 BigJunOba 阅读(305) 评论(0) 推荐(0)
摘要:一、设计一个有getMin功能的栈 题目:实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。pop、push、getMin操作的时间复杂度都是O(1). 思路:设计两个栈,一个栈用来保存当前栈中的元素,其功能和一个正常的栈没有区别,这个栈记为stackData;另一个栈用来 阅读全文
posted @ 2018-09-14 14:29 BigJunOba 阅读(242) 评论(0) 推荐(0)
摘要:一、找到无序数组中最小的k个数 二、在数组中找到出现次数大于N/K的数 三、最长的可整合子数组的长度 四、不重复打印排序数组中相加和为给定值的所有二元组和三元组 五、未排序正数数组中累加和为给定值的最长子数组的长度 六、未排序数组中累加和为给定值的最长子数组系列问题 七、未排序数组中累加和小于或等于 阅读全文
posted @ 2018-09-14 14:27 BigJunOba 阅读(128) 评论(0) 推荐(0)
摘要:一、转圈打印矩阵 题目:给定一个整型矩阵matrix,按照转圈的方式打印它。 要求:额外空间复杂度为O(1) 思路:矩阵分圈处理问题。用矩阵中左上角的坐标(tR,rC)和右下角的坐标(dR,dC)就可以表示一个子矩阵。 例如:(0,0)和(3,3)表示的是原来矩阵的最外层,此时打印:1 2 3 4 阅读全文
posted @ 2018-09-14 14:26 BigJunOba 阅读(309) 评论(0) 推荐(0)
摘要:一、将整数字符串转成整数值 二、判断字符数组中是否所有的字符都只出现过一次 三、在有序但含有空的数组中查找字符串 四、数组中两个字符串的最小距离 五、添加最少字符使字符串整体都是回文字符串 六、括号字符串的有效性和最长有效长度 七、公式字符串求值 八、0左边必有1的二进制字符串数量 九、拼接所有字符 阅读全文
posted @ 2018-09-14 14:23 BigJunOba 阅读(165) 评论(0) 推荐(0)
摘要:一、判断两个字符串是否互为变形词 问题:给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1与str2互为变形词。 举例:str1=“123”,str2=“231”,返回true。str1=“123”,str2=“2331”,返回fal 阅读全文
posted @ 2018-09-14 14:22 BigJunOba 阅读(450) 评论(0) 推荐(0)
摘要:一、环形单链表的约瑟夫问题 二、判断一个链表是否为回文结构 三、将单向链表按某只划分成左边小、中间相等、右边大的形式 四、复制含有随机指针节点的链表 五、两个单链表相交的一系列问题 六、将单链表的每K个节点之间逆序 七、将搜索二叉树转换成双向链表 阅读全文
posted @ 2018-09-14 14:17 BigJunOba 阅读(121) 评论(0) 推荐(0)
摘要:单链表Node节点类 双链表DoubleNode类 一、打印两个有序链表的公共部分 问题:给定两个有序链表head1和head2,打印两个链表的公共部分 解答:(1)如果head1的值小于head2,则head1向下移动。(2)如果head2的值小于head1的值,则head2向下移动。(3)如果h 阅读全文
posted @ 2018-09-14 14:15 BigJunOba 阅读(242) 评论(0) 推荐(0)
摘要:一、判断t1树是否包含t2树全部的拓扑结构 解法(O(M×N)):如果t1中某棵子树头结点和t2头结点的值一样,则从这两个头结点开始匹配,匹配的每一步都是让t1上的节点跟着t2的先序遍历移动,每移动一步,都检查t1的当前节点和t2当前节点的值是否一样。如果匹配的过程中发现有不匹配的过程,直接返回fa 阅读全文
posted @ 2018-09-12 20:35 BigJunOba 阅读(363) 评论(0) 推荐(0)
摘要:一、在二叉树中找到累加和为指定值的最长路径长度 给定一棵二叉树和一个32位整数sum,求累加和为sum的最长路径长度。路径是指从某个节点往下,每次最多选择一个孩子节点或者不选所形成的节点链 第一步:生成变量maxLen,记录累加和等于sum的最长路径长度 第二步:生成哈希表sumMap,负责记录从根 阅读全文
posted @ 2018-09-11 21:37 BigJunOba 阅读(271) 评论(0) 推荐(0)
摘要:一、判断二叉树是否为平衡二叉树(时间复杂度O(N)) 平衡二叉树就是:要么是一棵空树,要么任何一个节点的左右子树高度差的绝对值不超过1。 解法:整个过程为二叉树的后序遍历。对任何一个节点node来说,先遍历node的左子树,遍历过程中收集两个信息,一个是node的左子树是否为平衡二叉树,一个是nod 阅读全文
posted @ 2018-09-11 21:36 BigJunOba 阅读(368) 评论(0) 推荐(0)
摘要:一、二叉树的按层打印与ZigZag打印 1.按层打印: 题目中要求同一层的节点必须打印在一行上,并且要求输出行号。这就需要我们在原来的广度优先遍历基础上,必须要搞明白的是什么时候要换行。 解决方法:使用node类型的变量last便是正在打印的当前行的最右节点,nLast便是下一行的最右节点。假设每一 阅读全文
posted @ 2018-09-11 21:35 BigJunOba 阅读(211) 评论(0) 推荐(0)
摘要:一、汉诺塔问题(包括chapter 1中的汉诺塔问题) 二、 三、 四、 五、 六、 七、 八、 阅读全文
posted @ 2018-09-07 22:40 BigJunOba 阅读(135) 评论(0) 推荐(0)
摘要:一、最长递增子序列(LIS) 给定数组arr,返回arr的最长递增子序列。例如,arr={2,1,5,3,6,4,8,9,7},返回的最长递增子序列为{1,3,4,5,8,9} 1.时间复杂度为O(N2)的方法 第一步:生成长度为N的数组dp,dp[i]表示在以arr[i]这个数结尾的情况下,arr 阅读全文
posted @ 2018-09-06 17:04 BigJunOba 阅读(295) 评论(0) 推荐(0)
摘要:一、矩阵的最小路径和 问题描述,给定矩阵m如上面所示,从左上角开始每次只能向右或者向下走,最后到达右下角,求最小路径和。 假设矩阵m的大小为M×N,首先生成大小和m一样的矩阵dp,dp[i][j]的值表示从开始位置(0,0)走到(i.j)位置的最小路径和。 对于dp矩阵的第一行和第一列来说,如果要走 阅读全文
posted @ 2018-09-06 17:00 BigJunOba 阅读(414) 评论(0) 推荐(0)
摘要:一、斐波那契数列 斐波那契数列就是:当n=0时,F(n)=0;当n=1时,F(n)=1;当n>1时,F(n) = F(n-1)+F(n-2)。 根据斐波那契数列的定义,斐波那契数列为(从n=1开始):1,1,2,3,5,8...,也就是除了第1项和第2项外,对于第N项,都有F(n) = F(n-1) 阅读全文
posted @ 2018-09-06 10:03 BigJunOba 阅读(460) 评论(0) 推荐(0)

1