06 2020 档案

摘要:给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 输 阅读全文
posted @ 2020-06-15 21:19 Stephen~Jixing 阅读(205) 评论(0) 推荐(0)
摘要:题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+ 阅读全文
posted @ 2020-06-15 21:03 Stephen~Jixing 阅读(191) 评论(0) 推荐(0)
摘要:题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 矩阵中包含一条字符串"bcced"的路径,但是矩阵中 阅读全文
posted @ 2020-06-15 21:01 Stephen~Jixing 阅读(162) 评论(0) 推荐(0)
摘要:题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 创建两 阅读全文
posted @ 2020-06-15 20:57 Stephen~Jixing 阅读(154) 评论(0) 推荐(0)
摘要:题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 先走到最小的节点,然后一步步往后退 直到计数为0 /* struct TreeNode { int val; struct TreeNode *left; st 阅读全文
posted @ 2020-06-15 20:50 Stephen~Jixing 阅读(138) 评论(0) 推荐(0)
摘要:题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节 阅读全文
posted @ 2020-06-15 20:48 Stephen~Jixing 阅读(102) 评论(0) 推荐(0)
摘要:题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 如果当前节点有右子树,那么就是往右再一直往左就找到了 如果当前节点右子树为空,那么往上找父节点,一直找到当前节点为父节点的左子树为止 另一种情况就是当前节 阅读全文
posted @ 2020-06-15 20:42 Stephen~Jixing 阅读(190) 评论(0) 推荐(0)
摘要:题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 注意如果是头结点的判断 另外,每次->next的时候都需要判断当前节点是否为空 /* struct ListNode 阅读全文
posted @ 2020-06-15 20:35 Stephen~Jixing 阅读(128) 评论(0) 推荐(0)
摘要:题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 1.判断是否有e或者E 2.+或者-号如 阅读全文
posted @ 2020-06-15 20:29 Stephen~Jixing 阅读(249) 评论(0) 推荐(0)
摘要:题目描述 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均 阅读全文
posted @ 2020-06-15 20:24 Stephen~Jixing 阅读(216) 评论(0) 推荐(0)
摘要:题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 两个数相加=进位+原始位 即a+b = a^b + (a&b)<<1 class Solution { /* a+b = 进位值 + 不进位的和 */ public: int Add(int num1, int 阅读全文
posted @ 2020-06-15 20:18 Stephen~Jixing 阅读(183) 评论(0) 推荐(0)
摘要:题目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 运用&& n-- 到最后条件前面为0之后就不会计算后面的 class Solution { public: int Sum_Solution(in 阅读全文
posted @ 2020-06-15 20:12 Stephen~Jixing 阅读(125) 评论(0) 推荐(0)
摘要:题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a 阅读全文
posted @ 2020-06-15 20:06 Stephen~Jixing 阅读(212) 评论(0) 推荐(0)
摘要:题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快 阅读全文
posted @ 2020-06-15 19:59 Stephen~Jixing 阅读(196) 评论(0) 推荐(0)
摘要:题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 注意赋值 和一些边界条件判断就可以 class Solution { public: void FindNumsAppearOnce(vector<int> data,int* num1,int 阅读全文
posted @ 2020-06-15 13:28 Stephen~Jixing 阅读(117) 评论(0) 推荐(0)
摘要:题目描述 输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 因为公共节点之后的数据都是一样的,所以如果两个链表不一样长,如果存在公共尾,那么长的链表前一段一定是不匹配的 /* struct ListNode { int 阅读全文
posted @ 2020-06-15 13:19 Stephen~Jixing 阅读(191) 评论(0) 推荐(0)
摘要:题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 class Solution { public: int InversePairs(v 阅读全文
posted @ 2020-06-15 13:10 Stephen~Jixing 阅读(131) 评论(0) 推荐(0)
摘要:题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 如果用一个个数检测,时间复杂度高,通不过 需要用累乘的方法,用已有的丑数得到后面的丑数,直到第N个 每一个 阅读全文
posted @ 2020-06-15 11:35 Stephen~Jixing 阅读(134) 评论(0) 推荐(0)
摘要:题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 先将数组的元素排序(按字符序排) 然后从头到尾连接就可以 class Solution { public: st 阅读全文
posted @ 2020-06-15 11:31 Stephen~Jixing 阅读(115) 评论(0) 推荐(0)
摘要:题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1 阅读全文
posted @ 2020-06-15 11:03 Stephen~Jixing 阅读(111) 评论(0) 推荐(0)
摘要:题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 1.两个节点指针cur、pre(初始null) 2.先向左找打最小的 3.再递归找右边的的 4.双向链表,那left指向pre pre->right指向cur /* stru 阅读全文
posted @ 2020-06-15 10:42 Stephen~Jixing 阅读(117) 评论(0) 推荐(0)
摘要:题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路:先在每一个链表节点后面复制一个节点,然后插入对应 阅读全文
posted @ 2020-06-15 10:31 Stephen~Jixing 阅读(181) 评论(0) 推荐(0)
摘要:题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 二叉搜索树,中序遍历的最后一个元素是中间值,找到前一半比它小的,后一半比他大。 如果不满足一半小一半大,就false 满足就递归左右部分 class 阅读全文
posted @ 2020-06-15 10:24 Stephen~Jixing 阅读(152) 评论(0) 推荐(0)
摘要:22题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 层次遍历,用一个队列 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), l 阅读全文
posted @ 2020-06-15 07:58 Stephen~Jixing 阅读(170) 评论(0) 推荐(0)
摘要:题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长 阅读全文
posted @ 2020-06-14 20:35 Stephen~Jixing 阅读(121) 评论(0) 推荐(0)
摘要:题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。 构建两个栈 st 、 min_st st保存所有的元素,按照进栈出栈的顺序 min_st只保存栈 阅读全文
posted @ 2020-06-14 15:57 Stephen~Jixing 阅读(154) 评论(0) 推荐(0)
摘要:题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路:每次打印都是 阅读全文
posted @ 2020-06-14 15:45 Stephen~Jixing 阅读(173) 评论(0) 推荐(0)
摘要:题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 自写一个isSubtree函数,用来判断当前以及递归判断子树,在此函数中,如果头的值匹配,那么再往下匹配,如果开始就不匹配,就不用往下了 首先判断pRoot1和pRoot2头开始 然后再判断pRoo 阅读全文
posted @ 2020-06-14 15:21 Stephen~Jixing 阅读(157) 评论(0) 推荐(0)
摘要:题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 递归实现,比较当前值,构建当前节点 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), n 阅读全文
posted @ 2020-06-14 15:17 Stephen~Jixing 阅读(75) 评论(0) 推荐(0)
摘要:题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 解: 浮点数的次方也是拿着移位运算 cur=底数 指数按位&1 ?乘:不乘 cur乘倍 指数右移位 另外判断一下指数exponent的正 阅读全文
posted @ 2020-06-14 11:14 Stephen~Jixing 阅读(118) 评论(0) 推荐(0)
摘要:题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 开始看到负数用补码表示,还想着怎么转换负数,其实计算机已经将负数转换成补码了 拿着一通算就完事 代码中,用无符号的1作为标志来与运算& 每次都往左移位1 flag如果超过int范围,会归0 考虑到边界值,flag就移位到退出 阅读全文
posted @ 2020-06-14 11:09 Stephen~Jixing 阅读(99) 评论(0) 推荐(0)
摘要:题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 比如n=3时,2*3的矩形块有3种覆盖方法: f(n)=f(n-1)+f(n-2) 推广:如果是3*1的格子:f(n)=f(n-1)+f(n-3) 如果是k*1 阅读全文
posted @ 2020-06-14 11:03 Stephen~Jixing 阅读(123) 评论(0) 推荐(0)
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 跳上n级台阶的跳法等于跳上n-1台阶的跳法+n-2台阶的跳法,斐波拉契数列 f(1)=1 f(2)=2 class Solution { public: /* 斐波拉契数 阅读全文
posted @ 2020-06-14 10:52 Stephen~Jixing 阅读(217) 评论(0) 推荐(0)
摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 通过前序的第一个点,对中序切分->左半边和右半边,然 阅读全文
posted @ 2020-06-14 10:42 Stephen~Jixing 阅读(145) 评论(0) 推荐(0)
摘要:题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 先反转链表,再存入vector 注意链表->next的时候,都判断下此时是否为空,不然很容易越界 /** * struct ListNode { * int val; * struct ListNode *next; * Li 阅读全文
posted @ 2020-06-14 10:33 Stephen~Jixing 阅读(148) 评论(0) 推荐(0)
摘要:题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路: 一个空格替换成‘%’+‘20’,也就是一个字符位替换为两个字符位,所以先统计空格数,计算替换完成后的字符串总长度为多少。 阅读全文
posted @ 2020-06-14 10:27 Stephen~Jixing 阅读(249) 评论(0) 推荐(0)