CareerCup
文章平均质量分 88
Cracking the Coding Interview 刷题记录
兰亭风雨
在路上
展开
-
【CareerCup】Trees and Graphs—Q4.3
题目: Given a sorted (increasing order) array, write an algorithm to create a binary tree with minimal height. 翻译: 给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。 思路: 要使二叉树的高度最小,则要尽量使其左右子树的节点数目相当,自然就考虑到将其构造成为二叉排序树,且将有序数组的中间大的数作为根节点,这样得到的二叉树的高度便是最小的。原创 2014-04-30 07:57:17 · 2817 阅读 · 0 评论 -
【CareerCup】Trees and Graphs—Q4.2
题目: Given a directed graph, design an algorithm to find out whether there is a route between two nodes. 翻译: 给定一个有向图,设计算法判断两结点间是否存在路径。 思路: 考察图的遍历,如果遍历路径上经过该顶点,则存在路径,不经过则不存在路径,在遍历算法上做一些改进即可。我们这里用图的DFS来改进。并采用图的BFS和DFS一文中的有向图来作测试,并采用邻接原创 2014-04-09 08:33:07 · 3442 阅读 · 0 评论 -
【CareerCup】Trees and Graphs—Q4.1
转载请注明出处:http://blog.csdn.net/ns_code/article/details/22756167 题目: Implement a function to check if a tree is balanced. For the purposes of this question, a balanced tree is defined to be a tree原创 2014-04-02 00:03:13 · 2750 阅读 · 0 评论 -
【CareerCup】Stacks and Queues—Q3.5
转载请注明出处:http://blog.csdn.net/ns_code/article/details/22518359博客配置 原文: Write a program to sort a stack in ascending order. You should not make any assumptions about how the stack is implemented.原创 2014-04-01 08:38:57 · 2427 阅读 · 0 评论 -
【CareerCup】Stacks and Queues—Q3.4
转载请注明出处:http://blog.csdn.net/ns_code/article/details/22509253 题目: Implement a MyQueue class which implements a queue using two stacks. 翻译: 使用两个栈实现一个队列MyQueue。 思路: 两个栈模拟一个队列,主要是用两个栈的p原创 2014-03-30 11:38:32 · 2223 阅读 · 0 评论 -
【CareerCup】Stacks and Queues—Q3.3
转载请注明出处:http://blog.csdn.net/ns_code/article/details/22493621 题目: Imagine a (literal) stack of plates. If the stack gets too high, it might topple. Therefore, in real life, we would likely start原创 2014-03-30 11:38:23 · 2657 阅读 · 0 评论 -
【CareerCup】Stacks and Queues—Q3.2
翻译: 只用一个数组实现三个栈 思路: 用一个数组实现一个栈很容易,我们在Q3.1中也是用数组来模拟栈的。如果要用一个数组来实现三个栈,在压栈的时候,不管是哪个栈的push操作,直接将元素顺序压入到数组中,同时将本栈的栈顶索引指针指刚刚压入的元素即可,如下图所示(三种颜色分别代表三个栈,箭头指向每个栈的栈顶):原创 2014-03-29 08:31:50 · 2664 阅读 · 0 评论 -
【CareerCup】Stacks and Queues—Q3.1
要求实现一个栈,除了有push和pop操作外,还有一个min函数返回栈中的最小值, push,pop和min函数的时间复杂度都要为O(1)。 思路: push和pop操作很明显就是O(1)的时间复杂度,关键是min函数,一般来说,我们求栈中的最小值,会从栈顶开始遍历栈,并设置一个变量Min来保存每次遍历时的最小值 ,遍历到比Min还小的元素,就将该元素赋给Min,但这种方法的时间复杂度为O(n)。 我们可以考虑用空间换时间的思想来提高时间复杂度(很多时候时空均衡都是提高时间复杂原创 2014-03-29 08:31:20 · 2789 阅读 · 0 评论 -
【CareerCup】 Linked Lists—Q2.5
转载请注明出处:http://blog.csdn.net/ns_code/article/details/22097191 题目: Given a circular linked list, implement an algorithm which returns node at the beginning of the loop.DEFINITION Circular link原创 2014-03-27 00:00:32 · 2633 阅读 · 5 评论 -
【CareerCup】 Linked Lists—Q2.4
题目: You have two numbers represented by a linked list, where each node contains a single digit. The digits are stored in reverse order, such that the 1’s digit is at the head of the list. Write a function that adds the two numbers and returns the sum原创 2014-03-26 00:09:55 · 2675 阅读 · 3 评论 -
【CareerCup】 Linked Lists—Q2.3
题目: Implement an algorithm to delete a node in the middle of a single linked list, given only access to that node. EXAMPLE Input: the node ‘c’ from the linked list a->b->c->d->e Result: nothing is returned, but the new linked list look原创 2014-03-24 10:13:57 · 2639 阅读 · 0 评论 -
【CareerCup】 Linked Lists—Q2.2
题目: Implement an algorithm to find the nth to last element of a singly linked list. 翻译: 设计算法,从一个单链表中找到倒数第n个元素。 思路: 由于是单链表,我们只能从个前面遍历。我们可以有以下三种思路: 1、先遍历整个链表,求得链表的长度len,而后再从头遍历,找到地len-n(假设链表的首节点为第一个节点)个节点,即为导数第n个节点,这样时间复杂度为O(n),原创 2014-03-23 08:42:55 · 2622 阅读 · 2 评论 -
【CareerCup】 Linked Lists—Q2.1
题目: Write code to remove duplicates from an unsorted linked list. FOLLOW UP How would you solve this problem if a temporary buffer is not allowed? 翻译: 写一个程序从一个未排序的链表中移除重复的项 另外,如果不允许使用临时缓存,你如何解决这个问题?原创 2014-03-21 08:14:55 · 2420 阅读 · 3 评论 -
【CareerCup】 Arrays and Strings—Q1.7
题目: 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 call to isSubstring ( i.e., “waterbottle” is a rotation of “erbottl原创 2014-03-20 08:32:41 · 2668 阅读 · 0 评论 -
【CareerCup】 Arrays and Strings—Q1.6
题目: Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column is set to 0. 翻译: 写一个算法,对于一个MxN的矩阵,如果矩阵中某个元素为0,则将它所在的行和列都置为0. 思路: 肯定要遍历该矩阵,但显然我们不能遇到为0的元素就直接把它所在的行和列的元素置为0,这样遍历到后面的0时就不知道该位置本来就是0还是后来被置为原创 2014-03-20 08:23:23 · 2440 阅读 · 0 评论 -
【CareerCup】 Arrays and Strings—Q1.5
题目: Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees. Can you do this in place? 翻译: 用NxN的矩阵来表示一幅图像,图像中每个像素占4个字节,写一个函数把图像旋转90度。要求旋转操作尽可能原地操作(即不开辟额外的存储空间)。原创 2014-03-19 00:02:45 · 2841 阅读 · 2 评论 -
【CareerCup】 Arrays and Strings—Q1.4
题目: Write a method to decide if two strings are anagrams or not. 翻译: 写一个方法来判断两个字符串是否互为变位词。 注:如果构成两个字符串的字符完全相同,而对应字符所处的位置不同,则称这两个字符串互为变位词。如:"abbfcad"和"facbdab"互为变位词。 思路: 很多人应该一下子就能想到对两个字符串按照在字典中出现的先后顺序进行排序,而后再对排序后的两个字符串逐个比较,如果两原创 2014-03-19 00:01:57 · 3341 阅读 · 3 评论 -
【CareerCup】 Arrays and Strings—Q1.3
题目: Design an algorithm and write code to remove the duplicate characters in a string without using any additional buffer. NOTE: One or two additional variables are fine. An extra copy of the array is not.FOLLOW UP Write the test cases for t原创 2014-03-18 00:00:02 · 3216 阅读 · 0 评论 -
【CareerCup】 Arrays and Strings—Q1.2
题目: Write code to reverse a C-Style String. (C-String means that “abcd” is represented as five characters, including the null character.) 翻译: 编写代码,实现翻转一个C风格的字符串的功能。(C风格的意思是"abcd"需要用5个字符来表示,最后一个字符为空字符'\0') 思路: 最简单的方法当然是取得字符串的长度,而后一个原创 2014-03-16 00:12:19 · 3140 阅读 · 0 评论 -
【CareerCup】 Arrays and Strings—Q1.1
从今天开始要刷这个网站了,时间再紧,也要坚持下去! 题目: Implement an algorithm to determine if a string has all unique characters. What if you can not use additional data structures? 翻译: 实现一个算法来判断一个字符串中是否没有重复的字符,只能使用基本的数据结构。 思路: 我们这里假设字符串为26个小写字母(当然我们可以原创 2014-03-15 19:44:34 · 3755 阅读 · 1 评论