关闭

剑指offer在线编程

今天偶然在牛客网上看到在线编程的试题,特此推荐网址: https://www.nowcoder.com/ta/coding-interviews?query=&asc=true&order=&page=1...
阅读(170) 评论(0)

回溯法 机器人的运动范围

问题:地上有个 m 行 n 列的方格。一个机器人从坐标(0,0)的格子开始移动,它每一次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例如,当 k 为 18 时,机器人能够进入方格(35,37),因为 3+5+3+7=18 但它不能进入方格(35,38),因为 3+5+3+8=19 请问该机器人能够达到多少格子? 分析: 和前面的矩阵...
阅读(182) 评论(0)

回溯法 矩阵中的路径

题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中任意一格开始,每一步可以在矩阵中间向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。 例如:例如在下面的3*4的矩阵中包含一条字符串”bcced”的路径。但矩阵中不包含字符串“abcb”的路径,因为字符串的第一个字符b占据了矩阵中的第一行第二格子之后,路径不能再...
阅读(139) 评论(0)

滑动窗口的最大值

问题: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。 例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3...
阅读(168) 评论(0)

数据流中的中位数

问题:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有值排序之后位于中间的数值。如果数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。  分析:下面总结使用了没有排序的数组、排序的数组、排序的链表、二叉搜索树、AVL数、最大堆和最小堆几种不同的数据结构的时间复杂度。 思路:综合考虑用堆实现,考虑将数据序列从中间开始分为两个部分,左边...
阅读(154) 评论(0)

领导人要读的10本管理学书籍

每一个壮志在怀的打拼者都希望成长为一个完美的领导者,或许你天赋异禀,能够凭借自身能力成长为一个伟大的领导者,但是,如果有位大师比如约翰·麦克斯韦尔(John C. Maxwell)或德鲁克在你耳边不停地告诫:“别只注意表象,你会忽略深藏海底的巨大冰山”,“你知道,Google比Facebook对你帮助更大”,“小心,如果你不想惹众怒,最好别那么做”……你的成功会来得更快些。 《有效的管理者》...
阅读(113) 评论(0)

二叉搜索树的第k个节点

问题:给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。   分析:因为是二叉搜索树,所以可以用中序遍历的方式存储然后输出第k个结点,要注意为0和大于结点大小的K值; 详细的设计代码如下: //二叉搜索树的第k个节点 BinaryTreeNode* KthNode(Binar...
阅读(189) 评论(0)

序列化二叉树

问题:请实现两个函数,分别用来序列化和反序列化二叉树。这里序列化指的是将一棵二叉树保存到文件中,反序列化就是从文件中读取二叉树结点值重构原来的二叉树。 详细的实现代码如下: //序列化 void Serialize(BinaryTreeNode* pRoot, ostream& stream) { if(pRoot == NULL) { stream << "$...
阅读(111) 评论(0)

按照之字形顺序打印二叉树

问题: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。例如: 分析: 按照广度优先遍历来遍历二叉树,但是需要按照之字形来打印: 奇数行从左到右,跟BFS的遍历顺序一样,而偶数行从右到左,跟BFS的遍历顺序相反。 因此可以通过两个栈来实现,一个实现先进先出,即入栈顺序为右子节点、左...
阅读(122) 评论(0)

把二叉树打印成多行

问题:从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印到一行。例如: 打印结果:  8   6      10 5      7      9     11 分析:为了把二叉树的每一行单独打印到一行里,我们需要两个变量:一个变量表示在当前层中还没有打印的结点数,另一个变量表示下一层结点的数目。 //按照行打印二叉树 void Print(BinaryTreeNode...
阅读(155) 评论(0)

对称的二叉树

问题:请实现一个函数来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 详细的设计代码如下: bool isSymmetrical(BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2); //判断是否为对称树 bool isSymmetrical(BinaryTreeNode* pRoot) { return...
阅读(120) 评论(0)

二叉树的下一个结点

问题:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路:此题包含三步: 1. 如果此节点有右子树,下一个节点为右子节点的最左边的节点。 2.如果此节点没有右子树,并且如果此节点是其父节点的左子节点,则下一个节点为父节点。 3.如果此节点没有右子树,并且如果此节点是其父节点的右子节点,则一直向上找...
阅读(111) 评论(0)

八款实用软件

1、oCam:这款免费屏幕录制捕捉工具,编码功能强大,支持游戏录像,可录制任何区域,可选全屏模式或自定义区域截图;还可捕捉到正在播放的声音;非常简单易用,而且完全免费。操作也非常简单:1、设置屏幕录制范围;2、点击录制按钮;3、停止录制并保存;即可完成录像! oCam 2、Ashampoo Snap:阿香婆截图软件,德国老牌截图软件,专业的屏幕截图软件,支持抓取屏幕上的一切内容...
阅读(118) 评论(0)

删除链表中重复的结点

问题:在一个排序的链表中,如何删除重复的结点?例如下图情况: 详细的实现代码如下: //删除重复的结点 void deleteDuplication(ListNode** pHead) { if(pHead == NULL || *pHead == NULL) return; ListNode* pPreNode = NULL; ...
阅读(172) 评论(0)

链表中环的入口结点

问题:一个链表中包含环,如何找出环的入口结点?例如下图环的入口结点为3. 详细的设计代码如下: ListNode* MeetingNode(ListNode* pHead) { if(pHead == NULL) return NULL; ListNode* pSlow = pHead->m_pNext; if(pSlow == NULL) ...
阅读(126) 评论(0)
74条 共5页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:170572次
    • 积分:5288
    • 等级:
    • 排名:第5436名
    • 原创:221篇
    • 转载:177篇
    • 译文:120篇
    • 评论:34条
    个人博客
    最新评论