- 博客(15)
- 收藏
- 关注
原创 《剑指Offer》笔记5.3
时间效率与空间效率的平衡丑数第一个只出现一次的字符数组中的逆序对两个链表的第一个公共节点49:丑数题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如,6、8都是丑数,但 14 不是,因为它包含因子 7。习惯上我们把 1 当作第一个丑数。思路:新的丑数肯定是前面某个丑数乘以2、3或5的结果。动态规划,dp[i] = min(dp[i2]*2, dp[i3]*3, dp[i5]*5)class Solution { p
2020-09-02 16:27:49 92
原创 《剑指Offer》笔记5.2
时间效率数组中出现次数超过一半的数字最小的 k 个数数据流中的中位数连续子数组的最大值1~n 整数中 1 出现的次数数字序列中某一位的数字把数组排成最小的数把数组翻译成字符串礼物的最大价值最长不含重复字符的子字符串39:数组中出现次数超过一半的数字题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如,输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5此,超过数组长度的一半,因此输出2。思路:数组中有一个数字出现的次数超
2020-08-31 15:37:42 106
原创 《剑指Offer》笔记4.4
分解让复杂问题简单化复杂链表的复制二叉搜索树与双向链表序列化二叉树字符串的排列35:复杂链表的复制题目:请实现函数复制一个复杂链表。在复杂链表中,每个节点除了有一个指针指向下一个节点,还有一个指针指向链表中的任意节点或者 null。思路:方法一,时间复杂度O(n2):a. 复制原始链表上的每个节点,并用next 链接起来;b. 设置每个节点的 random 指针。由于随机指针指向的位置可能在前面,也可能在后面,因此要从头节点开始找。方法二,时间复杂度为O(n),但是需要一个大
2020-08-27 18:52:02 134
原创 《剑指Offer》笔记4.3
举例让抽象问题具体化包含 min 函数的栈栈的压入、弹出序列从上到下打印二叉树二叉搜索树的后序遍历序列30:包含 min 函数的栈题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数。在该栈中,调用min、push 及 pop 的时间复杂度都是 O(1)。思路:• 数据栈 A : 栈 A 用于存储所有元素,保证入栈 push() 函数、出栈 pop() 函数、获取栈顶 top() 函数的正常逻辑。• 辅助栈 B : 栈 B 中存储栈 A 中所有 非严格降
2020-08-25 18:27:29 99
原创 《剑指Offer》笔记4.2
画图让抽象问题形象化二叉树的镜像对称的二叉树顺时针打印矩阵27:二叉树的镜像题目:请完成一个函数,输入一棵二叉树,该函数输出它的镜像。思路:先前序遍历这棵树的每个节点,如果遍历到节点有子节点,就交换它的两个子节点。当交换完所有非叶节点的左、右子节点之后,就得到了树的镜像。/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public
2020-08-23 16:54:35 91
原创 《剑指Offer》笔记3.4
链表中倒数第 k 的节点链表中环的入口节点反转链表合并两个排序的链表树的子结构22:链表中倒数第 k 的节点题目:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。思路:假设整个链表有 n 个节点,那么倒数第 k 个节点就是从头节点开始的第 n-k+1 个节点。那么够得到链表中节点的个数 n 后,只要.
2020-08-23 16:51:10 93
原创 《剑指Offer》笔记3.3
代码的完整性16. 数值的整数次方 17. 打印从1到最大的 n 位数 18. 删除链表的节点 19. 正则表达式匹配 20. 表示数值的字符串 21. 调整数组顺序使奇数位于偶数前面题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。思路:假设目标是求出一个数字的32次方,如果已经知道了它的16次方,那么只要在16次方的基础上再平方一次就可以了。而16次方是8次方的平方。这
2020-08-19 16:04:23 90
原创 《剑指Offer》笔记2.4
算法和数据操作10. 斐波那契数列 11. 旋转数组的最小数字 12. 矩阵中的路径 13. 机器人的运动范围 14. 剪绳子 15. 二进制中 1 的个数10:斐波那契数列题目:求斐波那契数列的第n项。写一个函数,输入n,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:思路:递归,但是存在大量重复计算。 从下往上计算,首先根据 f(0) 和 f(1) 算出 f(2),在根据f(1) 和 f(2) 算出 f(3)……时间复杂度为O(n)
2020-08-16 15:34:31 97
原创 《软件测试的艺术》笔记六
更高级别的测试当程序无法实现其最终用户要求的合理功能上,就发生了一个软件错误。软件开发过程在很大程度上是沟通有关最终程序的信息、井将信息从一种形式转换到另一种形式。由于这个原因,绝大部分软件错误都可以归因为信息拘通和转换时发生的故障、差错和干扰。软件产品开发周期模型,过程:将软件最终用户的要求转换为一系列书面的需求。这些需求就是该软件产品要实现的目标 通过评估可行性与成本、消除相抵触的用户需求、建立优先级和平衡关系,将用户需求转换为具体的目标 将上述目标转换为一个准确的产品规格说明,将.
2020-08-13 21:34:46 137
原创 《剑指Offer》笔记2.3
数据结构二维数组中的查找 替换空格 从尾到头打印链表 重建二叉树 二叉树的下一个节点 用两个栈实现队列4:二位数组中的查找题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:首先选取数组中右上角(左下角)的数字。如果该数字等于要查找的数字,则查找过程结束;如果该数字大于要从查找的数字,则剔除这个数字所在的列;如果该数字小.
2020-08-13 14:49:37 137
原创 《软件测试的艺术》笔记五
模块(单元)测试构建大型程序测试的第一个步骤:模块(单元)测试桩模块(Stub)是指模拟被测试的模块所调用的模块,而不是软件产品的组成的部分。主模块作为驱动模块,与之直接相连的模块用桩模块代替。在集成测试前要为被测模块编制一些模拟其下级模块功能的“替身”模块,以代替被测模块的接口,接受或传递被测模块的数据,这些专供测试用的“假”模块称为被测模块的桩模块。测试用例设计模块的规格说明 模块的源代码使用一种或多种白盒测试方法分析模块的逻辑结构,然后使用黑盒测试方法对照模块的规格说明以补充测试用
2020-08-12 20:35:32 105
原创 《软件测试的艺术》笔记四
四、测试用例的设计软件测试的最关键问题是:在所有可能的测试用例中,哪个子集最有可能发现最多的错误?测试方法:先使用黑盒测试方法来设计测试用例,然后视情况需要使用白盒测试方法来设计补充的测试用例。白盒测试判断/条件覆盖准则,这种准则要求设计出充足的测试用例,将一个判断中的每个条件的所有可能的结果至少执行一次,将每个判断的所有可能的结果至少执行一次,将每个入口点都至少调用一次。缺点是尽管看上去所有条件的所有结果似乎都执行到了,但由于有些特定的条件会屏蔽掉其他的条件,常常并不能全部都执行.
2020-08-12 20:34:29 99
原创 《软件测试的艺术》笔记三
代码检查、走查与评审人工测试方法:利用错误列表进行代码检查 小组代码走查 桌面检査 同行评审 可用性测试(黑盒测试的一种),需要测试人员站在最终用户实用的角度来评估软件的可用性程度。代码检查与走查都要求人们组成一个小组来阅读或直观检查特定的程序。无论采用哪种方泣,参加者都需要完成一些准备工作。准备工作的高潮是在参加者会议上进行的所谓"头脑风暴会"。"头脑风暴会"的目标是找出错误来,但不必找出改正错误的方法。换句话说,是测试,而不是调试。检查进行肘,主要进行两项活动:由..
2020-08-11 20:44:47 152
原创 《软件测试的艺术》笔记二
软件测试的心理学和经济学测试是为发现错误而执行程序的过程软件测试更适宜被视为试图发现程序中错误(假设其存在)的破坏性的过程。一个成功的测试用例,通过诱发程序发生错误,可以在这个方向上促进软件质量的改进。当然,最终还是要通过软件测试来建立某种程度的信心:软件做了其应该做的,未做其不应该做的。但是通过对错误的不断硏究是实现这个目的的最佳途径。策略黑盒测试又称为数据驱动的测试或输入/输出驱动的测试。使用这种测试方法时,将程序视为一个黑盒子。测试目标与程序的内部机制和结构完全无关,而是将重点集中
2020-08-10 20:54:14 231
原创 《软件测试的艺术》笔记一
一次自评价测试程序的描述:这个程序从一个输入对话框中读取三个整数值,这三个整数值代表了三角形三条边的长度。程序显示提示信息,指出该三角形是何种三角形:不规则三角形、等腰三角形还是等边三角形。测试用例:是否有这样的测试用例,代表了一个有效的不规则三角形?(注意,如1、2、3和2、5、10这样的测试用例并不能确保“是”的答案,因为具备这样边长的三角形不存在。) 是否有这样的测试用例,代表一个有效的等边三角形? 是否有这样的测试用例,代表一个有效的等腰三角形?(注意,如2、2、4的测试用.
2020-08-10 20:51:58 428
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人