算法
文章平均质量分 80
yexz
这个作者很懒,什么都没留下…
展开
-
数据结构——从英文字典树到中文字典树
昨天面试电话中的一道题,题目如下:给你一个姓名的集合,查找你的名字是否在里面出现,比如搜索姓氏为叶的人,那么会出现所有姓为叶的人,应该如何设计?当时的回答是,姓为key,名为value,存放到multimap中,使用multimap中的count函数统计key为叶的个数,然后用find函数找到第一个key为叶的指针,使用迭代器从该指针向后查找count个元素,判断这count个元素中是否有姓名原创 2016-08-09 23:08:09 · 9331 阅读 · 0 评论 -
每日一练——轮询调度算法和短作业优先调度算法的平均等待时间
今天做亚信的笔试题遇到的轮询调度算法,和春招做的百度笔试题短作业优先调度算法很相似,但是难度要UPUP。做题的过程中,因为没有正确地处理迭代器失效的问题浪费了好多时间(>﹏轮询调度算法如果一个系统可以在单个CPU上运行多个并发作业,那么就该系统而言,“调度”是指:系统选择运行哪些任务,何时运行,何时中断以及以何种方式运行或中断。轮询调度规则是指:每个作业运行时间固定,该作业结束后,切换原创 2016-08-01 22:58:06 · 7350 阅读 · 2 评论 -
每日一练——大数加减乘除运算实现(网易笔试题)
前几天做网易笔试题时最后一道题是设计一个大数类,实现加减运算,因为做这道题时只有5分钟,结果我刚把类写出来,考试时间就结束了。其实在去年12月我写过一个RSA的加解密程序,其中就用到了大数的加减乘除运算(当然这只是RSA用到的一小部分),后面顺便附上面试时经常会让手写的加、减、乘代码。原创 2016-08-06 23:05:53 · 4654 阅读 · 0 评论 -
每日一练——用两个栈实现队列&用两个队列实现栈
题目一由两个栈组成的队列【题目】编写一个类,用两个栈实现队列,支持队列的基本操作(push、pop、front)。注意点:1、如果stack_push要往stack_pop中压入数据,必须一次性把stack_push中的数据全部压入。2、如果stack_pop不为空,stack_push绝对不能向stack_pop中压入数据。templateclass queue{原创 2016-08-10 22:52:41 · 680 阅读 · 0 评论 -
每日一练——求一个只包含0、1的矩阵中只包含1的最大子矩阵大小
题目描述:给定一个无序矩阵,其中只有1和0两种值,求只含有1的最大正方形的大小。例如给定如下矩阵:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0Return 4int max_square(vector>& matrix) { int row = matrix.size(); int col = matrix[0原创 2016-08-03 22:56:20 · 7704 阅读 · 0 评论 -
数据结构——二叉树的四种遍历方式(非递归)
二叉树遍历: 前序遍历:根左右(栈实现)中序遍历:左根右(栈实现)后序遍历:左右根(栈实现)层次遍历:从上往下遍历(队列实现)结构体如下:struct CTreeNode{ int m_Data; CTreeNode *m_lpLeft; CTreeNode *m_lpRight;};对于先序遍历,我们参考先序遍历的递归方式,先访问当前节点,递原创 2016-07-18 20:50:26 · 776 阅读 · 0 评论 -
每日一练——矩阵中的最大递增路径
题目描述:Given an integer matrix, find the length of the longest increasing path.From each cell, you can either move to four directions: left, right, up or down. You may NOT move diagonally or move原创 2016-07-11 16:16:47 · 2655 阅读 · 0 评论 -
每日一练——判断两序列是否为同一二叉搜索树序列
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路: sequence中从start到end,可以看成三个部分,最后一个是根节点,第一部分的所有数据均小于根节点,第二部分的所有数据均大于根节点。注意第一部分可能为空,第二部分也可能为空。先找到第一部分和第二部分的分割点,从分割原创 2016-07-12 14:02:49 · 1234 阅读 · 1 评论 -
每日一练——从长度为n的数组里选出m个数使和为固定值sum
这个问题是我从leetcode上一道问题所想到的,原题:如果是从数组中选出2个数相加使之成为固定的数sum,这当然很简单,把数组中的数字遍历一遍,判断另一个数字是否也在数组中即可。代码如下。 vector twoSum(vector& nums, int target) { vector result; map cache;//第一个为数字,第二个为下标原创 2016-07-24 22:47:19 · 26424 阅读 · 3 评论