算法
文章平均质量分 72
lmjy
这个作者很懒,什么都没留下…
展开
-
面试OR笔试43——走迷宫
如图所示为一个迷宫的分布图,其中灰色表示有障碍物不能通过。现在要从绿色的方格开始,每次只能走一格,制定方案如何能走到红色的终点方格处。给出一个可能的方案即可。原创 2017-09-22 11:53:20 · 660 阅读 · 0 评论 -
面试OR笔试23——数组和
1、先考虑首尾的两个数字之和,如果等于s则以完成;如果小于s,则把第一个元素换成其后面紧接着的元素;否则把最后一个元素换成其前面紧接着的元素。。。。。。。2、k1和k2分别记录连续位置元素的起止位置(初始都指向第一个元素),若其和大于s则k1后移一位,若小于则k2后移一位。。。。。。。直到k2到结尾或者k1超过k2。原创 2017-09-02 09:24:57 · 183 阅读 · 0 评论 -
面试OR笔试24——翻转单词顺序
输入一英文句子,翻转句子中单词的顺序,但单词内的字符顺序不变(标点字符和普通字母一样处理)。例如:输入I am a student. 则输出student. a am I 。原创 2017-09-02 11:19:49 · 178 阅读 · 0 评论 -
面试OR笔试22——数组中只出现一次的数字
一个整数数组中除了两个数字只出现一次之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。原创 2017-09-01 21:00:17 · 175 阅读 · 0 评论 -
面试OR笔试35——xor
给出n个数字a_1, …., a_n,求最多有多少个不重叠的非空区间,使得每个区间内数字的异或(xor)都为0。原创 2017-09-10 18:11:25 · 928 阅读 · 1 评论 -
面试OR笔试21——两个链表的第一个公共节点
输入两个链表,找出他们的第一个公共节点。原创 2017-09-01 10:25:30 · 189 阅读 · 0 评论 -
面试OR笔试15——第k元素
1 题目及要求1.1 题目描述求一个序列的第k大小的元素值。 2 解答2.1 代码int partition_m(vector &v, int left, int right) { if(right < left) return left; for (int k1(left); k1 < right; ++k1) { if (v[k1] < v[原创 2017-08-28 16:28:59 · 254 阅读 · 0 评论 -
面试OR笔试41——01背包
有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?原创 2017-09-17 20:32:54 · 304 阅读 · 0 评论 -
由日期计算周几
给定日期,计算星期几。原创 2017-09-09 13:06:26 · 1461 阅读 · 1 评论 -
面试OR笔试19——丑数
1 题目及要求1.1 题目描述只包含因子2、3和5的数称为丑数(Ugly Number),习惯上我们把1当做第一个丑数。求按从小到大顺序的第n(n > 0)个丑数。 2 解答2.1 代码bool isUgly(int n){ while(!(n%2)) n /= 2; while(!(n%3)) n /= 3; while(!(n%5)) n /= 5;原创 2017-08-31 16:18:36 · 95 阅读 · 0 评论 -
面试OR笔试18——哈希表处理字符串
1哈希表处理字符字符的哈希表虽然占用了一定的额外空间,但可以大大地减少时间复杂度,是典型的空间换取时间的栗子。下面的栗子都属于这一类。1.1 第一个只出现k次的字符【题目】在字符串中找出第一个只出现k次的字符,如字符串abeccdaff第一个只出现1次的字符时e【代码】char firstNRepeatingChar(const char *str, int n =原创 2017-08-30 21:30:44 · 236 阅读 · 0 评论 -
面试OR笔试40——二分查找一个函数解决多个问题
一个二分查找函数解决多个问题原创 2017-09-16 16:02:02 · 305 阅读 · 0 评论 -
面试OR笔试12——二叉树转化为链表
把一个二叉树转化为链表原创 2017-08-27 18:33:52 · 293 阅读 · 0 评论 -
面试OR笔试25——最后剩下的数
1、0, 1, 2, ……, n-1这n个数排成一圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。2、一个长度为n的数组,每次数组里删除第m个数字(到末尾后从头开始),求最后删除的一个数字。原创 2017-09-02 17:13:04 · 191 阅读 · 0 评论 -
面试OR笔试26——求1到n之和
求1到n的和。要求不能使用乘除法,for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。原创 2017-09-02 19:55:57 · 295 阅读 · 0 评论 -
面试OR笔试27——位运算做加法
写一个函数,求两个整数的和。要求在函数体内不得使用+、-、*、/ 四则运算符号。(分析:根据题意只能使用位运算)原创 2017-09-02 20:26:39 · 279 阅读 · 0 评论 -
最小二乘法理论推导算法
最小二乘法理论、推导、算法转载 2017-10-02 21:54:29 · 2306 阅读 · 0 评论 -
面试OR笔试45——实现next_permutation
实现next_permutation()函数。原创 2017-10-02 20:07:15 · 296 阅读 · 0 评论 -
面试OR笔试44——实现智能指针
实现智能指针。原创 2017-09-23 16:34:54 · 351 阅读 · 0 评论 -
Softmax回归
在本节中,我们介绍Softmax回归模型,该模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签 可以取两个以上的值。 Softmax回归模型对于诸如MNIST手写数字分类等问题是很有用的,该问题的目的是辨识10个不同的单个数字。Softmax回归是有监督的,不过后面也会介绍它与深度学习/无监督学习方法的结合。(译者注: MNIST 是一个手写数字识别库,由NYU 的Y转载 2017-10-02 19:24:14 · 262 阅读 · 0 评论 -
面试OR笔试42——划分数组
将正整数数组中的数字划分为两组,使得两个子数组的和的差值最小原创 2017-09-18 09:45:23 · 416 阅读 · 0 评论 -
前缀树的实现
Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。原创 2017-09-21 23:06:40 · 1684 阅读 · 0 评论 -
面试OR笔试4——最长公共子字符串
1 题目及要求1.1 题目内容最长公共子字符串。 2 解答2.1 题目分析首先要注意Longest Common Substring和Longest Common Subsequence是有区别的X = Y = X和Y的Longest Common Sequence为,长度为4X和Y的Longest Common Substring为 长度为2其实Sub原创 2017-08-12 21:56:46 · 331 阅读 · 0 评论 -
最长回文子串 C++
在一个字符串中要到最长的回文子串,有如下方案,代码在最后。最长回文子串的相关博文1、暴力法最容易想到的就是暴力破解,求出每一个子串,之后判断是不是回文,找到最长的那个。求每一个子串时间复杂度O(N^2),判断子串是不是回文O(N),两者是相乘关系,所以时间复杂度为O(N^3)。2、中心扩展中心扩展就是把给定的字符串的每一个字母当做中心,向原创 2017-05-14 19:11:06 · 1905 阅读 · 0 评论 -
面试OR笔试38——游历城市
一共有n个城市,编号为0到n-1号,几个城市之间的道路连接起来恰好构成一棵树。小毅现在在0号城市,每次行动小毅会从当前所在的城市走到与其相邻的一个城市,且小毅最多能行动L次。如果小毅到达过某个城市就视为游历过该城市了,小毅现在要制定旅游计划使他能游历最多的城市,请帮他计算以下他最多能游历多少个城市(注意0号城市已经游历了,游历过的城市不重复计算)。原创 2017-09-12 23:01:24 · 237 阅读 · 0 评论 -
面试OR笔试37——被4整除
小毅有一个长度为N的整数数列 A={A[1],A[2], A[3], …., A[N]}。马教授给小毅出了一个难题:对数列A进行重新排序,使得数列A满足所有的A[i] * A[i+1]都是4的整数(1 <=i < N)。小毅现在需要判断一个数列是否可以满足重重排后满足马教授的要求。原创 2017-09-12 16:35:28 · 333 阅读 · 0 评论 -
面试OR笔试36——计算算术表达式
含有加减乘除四则运算以及括号的表达式(字符串),求该表达式的结果。原创 2017-09-12 16:02:06 · 385 阅读 · 0 评论 -
面试OR笔试29——构建乘积数组
给定数组A[0, 1, 2, ......, n-1],请构建数组B[0, 1, 2, ......, n-1],其中B中的元素B[i]=A[0]×A[1]×A[2]×......×A[i-1]×A[i+1]×......×A[n-1]。原创 2017-09-03 16:24:41 · 203 阅读 · 0 评论 -
面试OR笔试28——数组中重复的数字
在长度为n的整数数组里的所有的数字都在0到n-1范围内。数组中某些数字是重复的,但不知道有几个数字重复,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果数字长度为7的数组{2, 3, 1, 0, 2, 5, 3}重复的数字是2和3,所以答案是2或3都正确。原创 2017-09-03 10:38:43 · 174 阅读 · 0 评论 -
常见排序算法总结 C++
各排序算法的思想及其性质以下排序算法的排序结果若无特殊说明均为升序,主要讲述算法的简单原理,时间复杂度,空间复杂度和稳定性。其中:时间复杂度简单来说就是算法中基本操作重复执行的次数;空间复杂度并不是计算实际占用的空间,而是计算整个算法的辅助空间;稳定性通俗地讲就是能保证排序中相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。注:在每种算法的后面会附上算法的C++实现,每原创 2017-05-22 14:08:53 · 856 阅读 · 0 评论 -
面试OR笔试5——最大疯狂值
1 题目及要求1.1 题目描述用n个整数组成的序列表示n个同学的身高。定义疯狂值为他们排成一排相邻同学身高差的绝对值的总和。现要求求出该序列的最大疯狂值。 1.2 测试用例1)n = 5, h = [5, 10, 25, 40, 25]2)n = 6, h=[1, 2, 3, 4, 5, 6]2 解答2.1 题目分析题意很明了,就是求序列相邻元素间差值总和的最大原创 2017-08-12 23:12:57 · 652 阅读 · 0 评论 -
面试OR笔试1——RNA嵌套
阿里笔试——RNA嵌套原创 2017-07-09 15:06:05 · 692 阅读 · 0 评论 -
面试OR笔试6——条件数列数
1 题目及要求1.1 题目描述求满足以下条件的数列的个数。1)数列长度为n;2)数列中每个数都在1到k之间(包括1和k);3)对于位置相邻的两个数A和B(A在B前),都满足 A或 A mod B != 0(满足其一即可)。例如对n = 4, k = 7,则[1, 7,7, 2]满足,[4, 4, 4, 2]不满足。给出n和k,求满足以上条件的数列的个数。原创 2017-08-15 16:10:19 · 313 阅读 · 0 评论 -
面试OR笔试7——小孩分蛋糕
1题目及要求1.1 题目描述有n块蛋糕编号为0到n-1,有k个小孩,这k个小孩有自己喜欢的蛋糕编号(行向量),如果小孩得到自己喜欢的蛋糕就会满意且一块蛋糕只能给一个小孩,一个小孩只能得一块蛋糕。求最多可以让多少小孩满意。二维数组v = [[0, 1, 2], [1], [2]]表示n = 3,k=3,其中第一个小孩喜欢0, 1, 2编号的蛋糕,第二个喜欢1编号的,第三个喜欢原创 2017-08-16 10:05:30 · 1055 阅读 · 0 评论 -
字符串匹配Sunday算法C++实现
字符串匹配Sunday算法sunday算法简介Sunday算法是Daniel M.Sunday于1990年提出的一种比BM算法搜索速度更快的算法。其核心思想是:在匹配过程中,模式串并不被要求一定要按从左向右进行比较还是从右向左进行比较,它在发现不匹配时,算法能跳过尽可能多的字符以进行下一步的匹配,从而提高了匹配效率(算法思想很简单)。在一定程度上比KMP算法和BM算法更优。但是该算原创 2017-05-13 23:01:26 · 1318 阅读 · 0 评论 -
左小右大
题目:给出一个元素无序的数组,求出一个数,使得其左边的数都小于它,右边的数都大于等于它。举例:1,2,3,1,2,0,5,6,返回下标6(数字为5)。思路(1):朴素算法,对于每一个数,都检测它的左边和右边是否满足题意。时间复杂度为O(n^2)思路(2)使用变量求解:(1)目前找到符合题意的候选值,st(2)目前已遍历数组的最原创 2017-05-14 19:47:17 · 1797 阅读 · 0 评论 -
C++实现KMP
2.next数组的求解思路 通过上文完全可以对kmp算法的原理有个清晰的了解,那么下一步就是编程实现了,其中最重要的就是如何根据待匹配的模版字符串求出对应每一位的最大相同前后缀的长度。我先给出我的代码:vector getNext(string s) { vector ret(s.length(),0); if (ret.empty()) return ret; for (原创 2017-05-12 19:51:39 · 448 阅读 · 0 评论 -
字符串匹配算法综述
字符串匹配算法,是在实际工程中经常遇到的问题,也是各大公司笔试面试的常考题目。此算法通常输入为原字符串(string)和子串(pattern),要求返回子串在原字符串中首次出现的位置。比如原字符串为“ABCDEFG”,子串为“DEF”,则算法返回3。常见的算法包括:BF(Brute Force,暴力检索)、RK(Robin-Karp,哈希检索)、KMP(教科书上最常见算法)、BM(Boyer Mo转载 2017-05-12 22:20:24 · 377 阅读 · 0 评论 -
分治法——循环赛事日程表
问题描述: 设有n=2^k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能参赛一次; (3)循环赛在n-1天内结束。 请按此要求将比赛日程表设计成有n行和n-1列的一个表。在表中的第i行,第j列处填入第i个选手在第j天所遇到的选手。其中原创 2017-05-15 16:55:09 · 955 阅读 · 0 评论 -
[LeetCode] Flatten Binary Tree to Linked List 将二叉树展开成链表 C++
Given a binary tree, flatten it to a linked list in-place.For example,Given 1 / \ 2 5 / \ \ 3 4 6 The flattened tree should look like:原创 2017-05-16 22:04:56 · 292 阅读 · 0 评论