摘要:前言 nowcoder题目:https://www.nowcoder.com/practice/566f7f9d68c24691aa5abd8abefa798c?tpId=101&rp=1&ru=%2Fta%2Fprogrammer-code-interview-guide&qru=%2Fta%2F
阅读全文
随笔分类 - 数据结构与算法
算法
摘要:转自 剑指Offer之 - 树中两个结点的最低公共祖先 题目: 求树中两个节点的最低公共祖先。 思路一: ——如果是二叉树,而且是二叉搜索树,那么是可以找到公共节点的。 二叉搜索树都是排序过的,位于左子树的节点都比父节点小,而位于右子树上面的节点都比父节点大。 如果当前节点的值比两个结点 的值都大,
阅读全文
摘要:原创内容,如转载请注明出处 题意:给定一个值和一个数组,求数组中任意个数字的和等于给定值的所有序列 输入: 10 1 2 7 5 6 8 10 输出 1 2 7 2 8 10 分析:此题首先对数组排序,再采用递归和回溯的方法,对于每次回溯,是否采用 i 位置上的数字作为加数,是一个回溯的关键点
阅读全文
摘要:问题描述 给定一个整数序列,序列中可能含有0,正数,负数,求出连续子序列乘积的最大值 暴力解法 双层循环,一一遍历,每次将当前结果与前次结果要比较,如果大于前次结果,更新最大值,时间复杂度为O(n2),复杂度较高,代码略 动态规划解法 对于序列arr,maxDp[k]表示以arr[k](必须包含ar
阅读全文
摘要:题意:给定一个数组,数组中元素的值只能是1或者-1,求其和为0的最长连续子序列的长度; 数组为1,-1,1,-1,1,-1,1,-1,其结果为:8 数组为1,1,-1,1,1,-1,-1,其结果为:6 解析: 通过分析可知,要使其和为0,只有当1和-1的个数相等时,才会成立,但题目要求是连续子序列,
阅读全文
摘要:注:本文内容参考左老师课程 二叉树的遍历分为前、中、后序,对于递归的实现方法,这里不再赘述,本文主要介绍实现非递归的方法,其核心思想均是用栈来实现,其中着重说明后序遍历。 前序遍历:相对容易 中序遍历: 后序遍历: 方法1:使用两个栈实现(把先序访问的顺序用第二个栈存起来,然后再出栈就成了) 具体过
阅读全文
摘要:原创内容,如需转载,请注明出处 题目大意:输入一个正数n,按顺时针方向打印n * n的蛇型矩阵。 输入: 6 输出: 1 2 3 4 5 6 20 21 22 23 24 7 19 32 33 34 25 8 18 31 36 35 26 9 17 30 29 28 27 10 16 15 14 1
阅读全文
摘要:假设有n项作业位于就绪队列中,这些作业的提交时间用数组requestTimes按照提交时间的先后顺序存储,对应的作业服务时间(持续时间)用数组durations存储。采用SJF算法,计算n项作业的平均等待时间。当存在多个相同长度的短作业时,按照提交时间的先后顺序进行调度。假设0<= n <= 100
阅读全文
摘要:原链接:http://www.nowcoder.com/live/2/5/1,本文内容由牛客网左老师的讲课内容整理而来。 KMP算法用于字符串匹配,其时间复杂度为o(n+ m),其中n为原字符串的长度,m为匹配字符串的长度,一般n > m,所以其时间复杂度也可以认为是o(n) 如假设有字符串str,
阅读全文
摘要:什么是动态规划方法? 面试中遇到的暴力递归题目可以优化成动态规划方法的大体过程: 动态规划方法的关键点: PS:之所以认为动态规划比较难,是因为对于暴力搜索不了解,导致对其优化过程不了解,找不出状态转移方程,画不出状态转移表,最终也无法写出动态规划。 此外:对于经典的动态规划问题如:硬币找零问题、0
阅读全文
摘要:标准库函数atoi用于将字符串类型的数据转换为整形数据:在转换过程中要考虑空指针、空字符串""、正负号,溢出等情况 这里是将字符串str转换为32位整型,其正数的最值为0x7FFFFFFF,负数的最小值为0x80000000(可参考有符号类型的最小负数的补码的由来),通过这两个值来判断是上溢还是下溢
阅读全文
摘要:约瑟夫环问题: 0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字,求出这个圆圈里剩下的最后一个数字。 这里给出以下几种解法, 1.用队列模拟 每次将前m-1个元素出队,出队元素放入队列的末尾,再循环即可,这种方法时间复杂度为O(mn)(每找出一个数字需要m步运
阅读全文
摘要:1. 洗牌 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Description:洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下
阅读全文
摘要:二叉树的前序遍历是:根结点、左结点、右结点 假设我们要构造的二叉树是:前序遍历ABDCE,因程序中要知道叶子结点,扩展后为AB#D##C#E## 代码如下图所示: 输出结果:
阅读全文