E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
CareerCup
careercup
-递归和动态规划 9.4
9.4 编写一个方法,返回某集合的所有子集。 类似leetcode:Subsets 解法: 解决这个问题之前,我们先要对时间和空间复杂度有个合理的评估。一个集合会有多少子集?我们可以这么计算,生成了一个子集时,每个元素都可以“选择”在或者不在这个子集中。也就是说,第一个元素有两个选择:它要么在集合中,要么不在集合中。同样,第二个元素也有两个选择,以此类推,2相乘n次等于2^n个子集。因此,在
·
2015-11-10 23:24
动态规划
careercup
-递归和动态规划 9.3
9.3 在数组A[0...n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个有序整数数组,元素值给不相同,编写一个方法,在数组A中找出一个魔术索引,若存在的话。 进阶: 如果数组元素有重复值,又该如何处理。? 解法一,选择蛮力法,我们可以直接迭代访问整个数组,找出符号条件的元素。 int magicSlow(int arr[],int n) { if(n==0)
·
2015-11-10 23:24
动态规划
careercup
-递归和动态规划 9.2
9.2 设想有个机器人坐在X*Y网格的左上角,只能向右、向下移动。机器人从(0,0)到(X,Y)有多少种走法? 进阶: 假设有些点为“禁区”,机器人不能踏足。设计一种算法,找到一条路径,让机器人从左上角移动到右下角。 类似leetcode:Unique Paths和Unique Paths II 解法: 我们需要数一数机器人向右X步、向下Y步,总共可以走多少种路径。这条路径总共有X+Y步
·
2015-11-10 23:23
动态规划
careercup
-数学与概率 7.7
7.7 有些数的素因子只有3、5、7,请设计一个算法,找出其中第k个数。 解法: 首先,我们可以将满足条件的前几个数列出来,以此寻找解题思路。 一种简单的思路就是对于已经列出的数,我们依次去乘以3,5,7得到一组数 然后找出最小且还没有列出的数,加入到这个列表。然后重复上面的步骤: 乘以3,5,7,找出最小且还没有列出的数……这个方法的时间复杂度是O(n2 )。 这种思路存在
·
2015-11-10 23:22
UP
careercup
-递归和动态规划 9.1
9.1 有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一个方法,计算小孩有多少种上楼梯的方法。 解法: 我们可以采用自上而下的方式来解决这个问题。小孩上楼梯的最后一步,也就是抵达第n阶的那一步,可能走1阶、2阶或3阶。也就是说,最后一步可能是从第n-1阶往上走1阶、从n-2阶往上走2阶,或从第n-3阶往上走3阶。因此,抵达最后一阶的走法,其实就是抵达这最后三阶的方式的
·
2015-11-10 23:22
动态规划
careercup
-数学与概率 7.6
7.6 在二维平面上,有一些点,请找出经过点数最多的那条线。 解法: 类似于leetcode:Max Points on a Line 我们只需在任意两点之间“画”一条无限长的直线(也即不是线段),并利用散列表追踪哪条直线出现的次数最多。这种做法的时间复杂度O(n^2),因为一共有n^2条线段。 通过将每一个点与除了自己之外的每一点求斜率(要注意相等和斜率不存在的情况),使用unorder
·
2015-11-10 23:21
UP
careercup
-位操作5.1
5.1 写程序使整数N中第i位到第j位的值与整数M中的相同。 题目 给定两个32位的数,N和M,还有两个指示位的数,i和j。 写程序使得N中第i位到第j位的值与M中的相同(即:M变成N的子串且位于N的第i位和第j位之间) 例子: 输入: N = 10000000000, M = 10101, i = 2, j = 6 输出: N = 10001010100 解答 方案1:先将N中第0位到
·
2015-11-10 23:20
位操作
careercup
-数学与概率
7.3 给定直角坐标系上的两条线,确定这两条线会不会相交。 解法: 此题有很多不确定的地方:两条线的格式是什么?两条线实为同一条怎么处理?这些含糊不清的地方最好跟面试官讨论一下。 下面将做出以下假设: 若两条线是相同的(斜率和y轴截距相等),则认为这两条线相交; 两条线若不平行则必相交。因此,要检查两条线相交与否,我们只需检查两者的斜率是否相同,或是否为同一条。 实现代
·
2015-11-10 23:20
UP
careercup
-树与图 4.9
4.9 给定一颗二叉树,其中每个结点都含有一个数值。设计一个算法,打印结点数值总和等于某个给定值的所有路径。注意,路径不一定非得从二叉树的根节点或叶子节点开始或结束。 类似于leetcode:Path Sum II C++实现代码:(使用了双重的递归)对于不含有parent指针域时。 #include<iostream> #include<new>
·
2015-11-10 23:19
UP
careercup
-树与图 4.8
4.8 你有两棵非常大的二叉树:T1,有几百万个结点;T2,有几百个结点。设计一个算法,判断T2是否为T1的子树。 如果T1有这么一个结点n,其子树与T2一模一样,则T2C++实现代码: #include<iostream> #include<new> using namespace std; //Definition for binary tree
·
2015-11-10 23:18
UP
careercup
-树与图 4.7
4.7 设计并实现一个算法,找出二叉树中某两个结点的第一个共同祖先。不得将额外的结点储存在另外的数据结构中。注意:这不一定是二叉查找树。 解答 本题的关键应当是在Avoid storing additional nodes in a data structure 这句话上。我的理解是,不允许开额外的空间(比如说一个数组)来存储作为中间变量的结点。 虽然我也怀疑它是不是说不允许在结点数据结构Nod
·
2015-11-10 23:17
UP
对女性友好的编程语言
对此,Gayle Laakmann McDowel(Gayle Laakmann McDowell是
CareerCup
公司的创始人兼CEO,也是《Cracking the Coding》 以及《The
·
2015-11-10 21:45
编程语言
判断一个字符串在至多删除k个字符后是否为回文串
转自: http://www.
careercup
.com/question?
·
2015-11-08 16:42
字符串
行列有序矩阵求第k大元素
问题来源:http://www.
careercup
.com/question?id=6335704 问题描述: Given a N*N Matrix.
·
2015-11-08 16:33
有序
careercup
-中等难度 17.11
17.11 给定rand5(),实现一个方法rand7().也即,给定一个产生0到4(含)随机数的方法,编写一个产生0到6(含)随机数的方法。 解法: 这个函数要正确实现,则返回0到6之间的值,每个值的概率必须为1/7. 1 第一个尝试(调用次数固定) 第一个尝试时,我们可能会想产生出0到9之间的值,然后再除以7取余数。代码大致如下: int rand7() { int v
·
2015-11-08 15:04
UP
careercup
-中等难度 17.12
17.12 设计一个算法,找出数组中两数之和为指定值的所有整数对。 解答 时间复杂度O(n)的解法 我们可以用一个哈希表或数组或bitmap(后两者要求数组中的整数非负)来保存sum-x的值, 这样我们就只需要遍历数组两次即可找到和为指定值的整数对。这种方法需要O(n) 的辅助空间。如果直接用数组或是bitmap来做,辅助空间的大小与数组中的最大整数相关, 常常导致大量空间浪费。比如原数组中有
·
2015-11-08 15:04
UP
careercup
-中等难度 17.9
17.9 设计一个方法,找出任意指定单词在一本书中的出现频率。 解法: 1 单次查询 遍历这本书的每个单词,计算给定单词出现的次数。时间复杂度O(n),我们无法继续优化它,因为书中的每个单次都需要访问一次。当然,如果我们假设书中的单词是均匀分布的,那我们就可以只统计前半本书某个单次出现的次数,然后乘以2;或是只统计前四分之一本书某个单次出现的次数,然后乘以4。 2 多次查询 如果我们要重
·
2015-11-08 15:03
UP
careercup
-中等难度 17.7
17.7 给定一个整数,打印该整数的英文描述(例如“One Thousand,Two Hundred Thirty Four”)。 解法: 举个例子,在转换19 323 984时,我们可以考虑分段处理,没三位转换一次,并在适当的地方插入“thousand”(千)和“million”(百万)。也即, convert(19 323 984)=convert(19)+ “ million ”+co
·
2015-11-08 15:02
UP
careercup
-中等难度 17.8
17.8 给定一个整数数组(有正数和负数),找出总和最大的连续序列,并返回总和。 解法: 就是求连续子序列的和最大,不过存在一个问题: 假设整个数组都是负数,怎么样才是正确的行为呢?看看这个简单的数组{-3,-10,-5},一下答案每个都可以说的通: -3(假设子序列不能为空) 0(子序列的长度为空) INT_MIN(视为错误的情况) 我们会选择第二种(maxSum=0),但并没有所
·
2015-11-08 15:02
UP
careercup
-中等难度 17.6
17.6 给定一个整数数组,编写一个函数,找出索引m和n,只要将m和n之间的元素排好序,整个数组就是有序的。注意:n越小越好,也就是说,找出符合条件的最短序列。 解法: 开始解题之前,让我们先确认一下答案会是什么样的。如果要找的是两个索引,这表明数组中间有一段有待排序,其中数组开头和末尾部分是排好序的。 现在,我们借用下面的例子来解决此题: 1,2,4,7,10,11,7,12,6,7,1
·
2015-11-08 15:01
UP
careercup
-中等难度 17.5
17.5 写一个函数来模拟游戏。 游戏规则如下: 4个槽,里面放4个球,球的颜色有4种,红(R ),黄(Y),绿(G),蓝(B)。比如, 给出一个排列RGGB,表示第一个槽放红色球,第二和第三个槽放绿色球,第四个槽放蓝色球。 你要去猜这个排列。比如你可能猜排列是:YRGB。当你猜的颜色是正确的,位置也是正确的, 你就得到一个hit,比如上面第3和第4个槽猜的和真实排列一样(都是GB
·
2015-11-08 15:00
UP
careercup
-中等难度 17.4
17.4 编写一个方法,找出两个数字中最大的那一个。不得使用if-else或其他比较运算符。 解法: 我们可以通过一步步的分析来将需要用到的if-else和比较操作符去掉: If a > b, return a; else, return b. If (a - b) < 0, return b; else, return a. If (a - b) < 0, 令k =
·
2015-11-08 15:59
UP
careercup
-中等难度 17.3
17.3 写一个算法计算n的阶乘末尾0的个数? 解答: 首先,算出n的阶乘的结果再去计算末尾有多少个0这种方法是不可取的, 因为n的阶乘是一个非常大的数,分分种就会溢出。我们应当去分析, 是什么使n的阶乘结果末尾出现0。 n阶乘末尾的0来自因子5和2相乘,5*2=10。因此,我们只需要计算n的阶乘里, 有多少对5和2。注意到2出现的频率比5多,因此,我们只需要计算有多少个因子5即可
·
2015-11-08 15:59
UP
CareerCup
Chapter 9 Sorting and Searching
9.1 You are given two sorted arrays, A and B, and A has a large enough buffer at the end to hold B. Write a method to merge B into A in sorted order. A has enough buffer at
·
2015-11-08 11:52
search
Moderate 加入空格使得可辨别单词数量最多 @
CareerCup
递归题目,注意结合了memo的方法和trie的应用 package Moderate; import java.util.Hashtable; import CtCILibrary.AssortedMethods; import CtCILibrary.Trie; /** * Oh, no! You have just completed a
·
2015-11-08 10:54
UP
Hard 不用+号实现两个数之和 @
CareerCup
例子: 759+674 1)不考虑进位: 323 2)只考虑进位:1110 3)两者之和:1433 递归求解c package Hard; /** * Write a function that adds two numbers. You should not use + or any arithmetic operators. 译文:
·
2015-11-08 10:52
UP
Hard 随机洗牌函数 @
CareerCup
第i个元素和index在[i,length-1]之间的一个数随机交换 package Hard; import CtCILibrary.AssortedMethods; /** * * Write a method to shuffle a deck of cards. It must be a perfect shuffle - in other
·
2015-11-08 10:52
UP
Hard 随机选择subset @
CareerCup
算法同上题 package Hard; import CtCILibrary.AssortedMethods; /** * Write a method to randomly generate a set of m integers from an array of size n. Each element must have equal probab
·
2015-11-08 10:51
set
Hard 计算0到n之间2的个数 @
CareerCup
一种是Brute force,O(nlogn) 另一种是找规律O(n),见http://hawstein.com/posts/20.4.html 当某一位的数字小于2时,那么该位出现2的次数为:更高位数字x当前位数 当某一位的数字大于2时,那么该位出现2的次数为:(更高位数字+1)x当前位数 当某一位的数字等于2时,那么该位出现2的次数为:更
·
2015-11-08 10:50
UP
[
CareerCup
] 14.3 Final Finally Finalize 关键字比较
14.3Whatisthedifferencebetweenfinal,finally,andfinalize? 这道题考察我们Java中的三个看起来很相似的关键字final,finally和finalize。别看它们三长的很像,但是完全不是一回事。final用在一个变量,方法或是类之前表示是否可变化。而finally是用在try/catch模块中来却表一段代码总是被执行了。finalize方法
Grandyang
·
2015-11-08 10:00
[
CareerCup
] 14.2 Try-catch-finally Java中的异常处理
14.2InJava,doesthefinallyblockgetexecutedifweinsertareturnstatementinsidethetryblockofatry-catch-finally? 这道题问我们Java中的finally块是否会被执行,当我们在try中加入了返回return。答案是即便try中加入了return或者continue或者break等命令,finally
Grandyang
·
2015-11-08 09:00
careercup
-高等难度 18.9
18.9 随机生成一些数字并传入某个方法。编写一个程序,每当收到新字符数字时,找出并记录中位数。 类似:设计一个数据结构,包括两个函数,插入数据和获得中位数 解法: 一种解法是使用两个优先级堆:一个大根堆,存放小于中位数的值,以及一个小根堆存放大于中位数的值。这会将所有元素大致分为两半,中间的两个元素位于两个堆的堆顶。这样一来,要找到中位数就是小事一桩。 不过,“大致分为两半”又是什么意思呢
·
2015-11-07 14:53
UP
careercup
-高等难度 18.7
18.7 给定一组单词,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成。 解法: 原题 给定字符串,以及一个字典,判断字符串是否能够拆分为字段中的单词。例如,字段为{hello,world},字符串为hellohelloworld,则可以拆分为hello,hello,world,都是字典中的单词。 分析 这个题目唤作“分词问题”,略显宽泛。只是想提及这个问题,这
·
2015-11-07 14:53
UP
careercup
-高等难度 18.6
18.6 设计一个算法,给定10亿个数字,找出最小的100万个数字。假定计算机内存足以容纳全部10亿个数字。 解法: 方法1:排序 按升序排序所有的元素,然后取出前100万个数,时间复杂度为O(nlog(n)) 方法2:大顶堆 我们可以使用大顶堆来解题。首先,为前100万个数字创建一个大顶堆 然后,遍历整个数列,将每个元素插入大顶堆,并删除最大的元素。 遍历结束后,我们将得到一个堆,
·
2015-11-07 14:52
UP
careercup
-高等难度 18.5
18.5 有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(也即相隔几个单词)。有办法在O(1)时间里完成搜索操作吗?解法的空间复杂度如何? 解法1:我们假设单词word1和word2谁在前谁在后无关紧要。要解决此题,我们需要遍历一次这个文件。在遍历期间,我们会记下最后看见word1和word2的地方,并把它们的位置存入lastPosWord1和lastPosW
·
2015-11-07 14:51
UP
careercup
-高等难度 18.2
18.2 编写一个方法,洗一副牌。要求做到完美洗牌,换言之,这幅牌52!种排列组合出现的概率相同。假设给定一个完美的随机发生器。 解法:假定有个数组,含有n个元素,类似如下: [1][2][3][4][5] 利用简单构造法,我们不妨先问自己,假定有个方法shuffle(...)对n-1个元素有效,我们可以用它来打乱n个元素的次序吗?当然可以,而且非常容易实现。我们会先打乱前n-1个元素的次序
·
2015-11-07 14:51
UP
[
CareerCup
] 14.1 Private Constructor 私有构建函数
14.1Intermsofinheritance,whatistheeffectofkeepingaconstructorprivate? 这道题问我们用继承特性时,如果建立一个私有的构建函数会怎样。只有能访问该函数的私有变量或函数的东西才能访问私有构建函数,比如内部类就可以访问,比如类A是类Q的一个内部类,那么Q的其他内部类可以访问类A的私有构建函数。由于一个子类可以调用父类的构建函数,类A可
Grandyang
·
2015-11-06 14:00
[
CareerCup
] 13.10 Allocate a 2D Array 分配一个二维数组
13.10WriteafunctioninCcalledmy2DAllocwhichallocatesatwo-dimensionalarray.Minimizethenumberofcallstomallocandmakesurethatthememoryisaccessiblebythenotationarr[i][j]. 这道题让我们写个C语言函数my2DAlloc用来给一个二维数组分配内
Grandyang
·
2015-11-04 04:00
[
CareerCup
] 13.9 Aligned Malloc and Free Function 写一对申请和释放内存函数
13.9Writeanalignedmallocandfreefunctionthatsupportsallocatingmemorysuchthatthememoryaddressreturnedisdivisiblebyaspecificpoweroftwo. EXAMPLE align_malloc(1000,128)willreturnamemoryaddressthatisamulti
Grandyang
·
2015-11-03 03:00
找工作相关算法学习计划
国外找工作 leetcode
careercup
网站的创始人编写了
careercup
cracking coding interview
·
2015-11-02 17:37
找工作
[
CareerCup
] 13.8 Smart Pointer 智能指针
13.8Writeasmartpointerclass.Asmartpointerisadatatype,usuallyimplementedwithtemplates,thatsimulatesapointerwhilealsoprovidingautomaticgarbagecollection.ItautomaticallycountsthenumberofreferencestoaSma
Grandyang
·
2015-11-02 13:00
[
CareerCup
] 13.7 Node Pointer 节点指针
13.7WriteamethodthattakesapointertoaNodestructureasaparameterandreturnsacompletecopyofthepassedindatastructure.TheNodedatastructurecontainstwopointerstootherNodes. 在这道题让我们通过一个节点指针来复制整个数据结构,节点类Node中包含
Grandyang
·
2015-11-02 11:00
careercup
-扩展性和存储限制10.6
题目 你有10亿个url,每个url对应一个非常大的网页。你怎么检测重复的网页? 解答 网页大,数量多,要把它们载入内存是不现实的。 因此我们需要一个更简短的方式来表示这些网页。而hash表正是干这事的。 我们将网页内容做哈希,而不是url,这里不同url可能对应相同的网页内容。 将每个网页转换为一个哈希值后,我们就得到了10亿个哈希值, 很明显,两两对比也是非常耗时的O(n2&nb
·
2015-10-31 14:07
UP
careercup
-扩展性和存储限制10.4
题目 有一个数组,里面的数在1到N之间,N最大为32000.数组中可能有重复的元素(即有的元素 存在2份),你并不知道N是多少。给你4KB的内存,你怎么把数组中重复的元素打印出来。 解答 我们有4KB的内存,一共有4 * 210 * 8位,大于32000,所以我们可以用Bit Map 来做这道题目。题目很简单,不过我们可以把代码写得漂亮一些。 我们可以写一个Bit Map类来完成基本
·
2015-10-31 14:06
UP
careercup
-扩展性和存储限制10.3
题目 给你一个文件,里面包含40亿个整数,写一个算法找出该文件中不包含的一个整数, 假设你有1GB内存可用。 如果你只有10MB的内存呢? 解答 我们先来做个算术题,40亿个整数大概有多大? 40 * 10^8 * 4B = 16GB (大约值,因为不是按照2的幂来做单位换算) 这个明显无法一次性装入内存中。但是,如果我们用计算机中的一位来表示某个数出现与否, 就可以减少内存使用量。
·
2015-10-31 14:05
UP
CareerCup
它1.8 串移包括问题
【称号】 原文: 1.8 Assume you have a method isSubstring which checks if one word is a substring of another. Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using only one c
·
2015-10-31 11:41
UP
[
CareerCup
] 3.6 Sort Stack 栈排序
3.6 Write a program to sort a stack in ascending order (with biggest items on top). You may use at most one additional stack to hold items, but you may not copy the elements into any other dat
·
2015-10-31 09:43
stack
Careercup
- Facebook面试题 - 6026101998485504
2014-05-02 10:47 题目链接 原题: 1 Given an unordered array of positive integers, create an algorithm that makes sure no group of integers of size bigger than M have the same integers. 2 3 Input: 2,1
·
2015-10-31 09:22
Facebook
Careercup
- Facebook面试题 - 5344154741637120
2014-05-02 10:40 题目链接 原题: Sink Zero in Binary Tree. Swap zero value of a node with non-zero value of one of its descendants so that no node with value zero could be parent of node with non-zero.
·
2015-10-31 09:22
Facebook
Careercup
- Facebook面试题 - 5733320654585856
2014-05-02 09:59 题目链接 原题: Group Anagrams input = ["star, astr, car, rac, st"] output = [["star, astr"],["car","rac"],["st"]); 题目:给定一堆字符串,设法把
·
2015-10-31 09:22
Facebook
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他