CareerCup
文章平均质量分 72
chiiis
这个作者很懒,什么都没留下…
展开
-
Hard 找最小的k个数(Selection Rank) @CareerCup
1 排序 O(nlogn)2 建最大堆,插入新元素的同时,不断删除最大元素O(nlogk)3 Selection Rank 算法,注意partition方法,极其容易写错!我会另外写一篇专门讲这个算法!package Hard;import java.util.Arrays;import CtCILibrary.AssortedMethods;/** * Desc原创 2013-12-13 06:34:53 · 1842 阅读 · 0 评论 -
Stack_Queue 栈实现min函数 @CareerCup
原文:How would you design a stack which, in addition to push and pop, also has a function min which returns the minimum element? Push, pop and min should all operate in O(1) time.译文:实现一个栈,除了原创 2014-03-01 12:24:38 · 1499 阅读 · 0 评论 -
LinkLists 链表中返回倒数第n个元素 @CareerCup
原文:Implement an algorithm to find the nth to last element of a singly linked list.译文:实现一个算法从一个单链表中返回倒数第n个元素。思路:1 递归(头递归),在递归过程中,递归到倒数第k个时直接打印出来。如果需要保存那个值,则可以建一个wrapper类来存放,或者用全局变量原创 2014-02-28 11:44:05 · 1867 阅读 · 0 评论 -
Arrays_Strings 把一个矩阵置为0 @CareerCup
LeetCode 原题: http://blog.csdn.net/fightforyourdream/article/details/14220585贴一下CareerCup官方解答package Arrays_Strings;import CtCILibrary.AssortedMethods;public class S1_7 { public static vo原创 2014-02-28 09:20:26 · 1074 阅读 · 0 评论 -
LinkLists 乱序链表中移除重复的项 @CareerCup
原文:Write code to remove duplicates from an unsorted linked list.FOLLOW UPHow would you solve this problem if a temporary buffer is not allowed?译文:从一个未排序的链表中移除重复的项进一步地,如果不允许原创 2014-02-28 10:26:14 · 1557 阅读 · 0 评论 -
LinkLists 两个链表相加 @CareerCup
原文: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 f原创 2014-03-01 03:09:04 · 2195 阅读 · 0 评论 -
LinkLists 把一个链表根据一个值分成两半 @CareerCup
Write code to partition a linked list around a value x, such that all nodes less than x come before all nodes greater than or equal to x.写代码把一个链表根据值x分成两块,来使得所有小于x的节点都在大等于x的节点的前面。例如:1->3->7->5->2原创 2014-02-28 12:57:36 · 1297 阅读 · 0 评论 -
Arrays_Strings 利用isSubstring检查是否子串 @CareerCup
原文: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 isSub原创 2014-02-28 09:26:04 · 1630 阅读 · 0 评论 -
Arrays_Strings 90度顺时针逆时针旋转方形矩阵 @CareerCup
原文: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的矩阵,图像中每个像原创 2014-02-28 06:00:53 · 2020 阅读 · 0 评论 -
LinkLists 找链表环入口 @CareerCup
原文:Given a circular linked list, implement an algorithm which returns node at the beginning of the loop.DEFINITIONCircular linked list: A (corrupt) linked list in which a node’s next point原创 2014-03-01 04:52:18 · 1396 阅读 · 0 评论 -
LinkLists 删除链表中的一个给定指针的结点 @CareerCup
原文:Implement an algorithm to delete a node in the middle of a single linked list, given only access to that node.EXAMPLEInput: the node ‘c’ from the linked list a->b->c->d->e Result: nothi原创 2014-02-28 12:01:31 · 1107 阅读 · 0 评论 -
Arrays_Strings 压缩字符串 @CareerCup
Implement a method to perform basic string compression using the counts of repeated characters. For example, the string aabcccccaaa would become a2blc5a3. If the “compressed” string would not become s原创 2014-02-28 05:09:36 · 2054 阅读 · 0 评论 -
Arrays_Strings 把字符串中所有的空格替换为%20 @CareerCup
原文:Write a method to replace all spaces in a string with ‘%20’.译文:写一个函数,把字符串中所有的空格替换为%20 。先计算出空格个数,然后从后往前逐个替换空格,不用新开数组package Arrays_Strings;import CtCILibrary.AssortedMethod原创 2014-02-28 02:35:06 · 1817 阅读 · 0 评论 -
Arrays_Strings 判断两个字符串是否有相同的字符 @CareerCup
Check if the two strings have identical character counts.方法1:对两个字符串分别排序,然后判断是否相等。但会破坏原字符串方法2:用一个O(1)的额外空间来记录,每个字符出现的次数。不会破坏原字符串package Arrays_Strings;import java.util.Arrays;publ原创 2014-02-28 02:11:50 · 1986 阅读 · 0 评论 -
Arrays_Strings 翻转字符串 @CareerCup
原文: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个字符来表示,包含末尾的 结束字原创 2014-02-28 01:26:48 · 1611 阅读 · 2 评论 -
Arrays_Strings 判断字符串中的字符是否唯一@CareerCup
原文:Implement an algorithm to determine if a string has all unique characters. What if you can not use additional data structures?译文:实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结原创 2014-02-27 10:55:06 · 1149 阅读 · 0 评论 -
Hard 大文本找两个单词最短距离 @CareerCup
如果只要找一次就用第一种O(n)解法如果要找多次就多用一个Hashtable,把所有的组合都保存起来package Hard;import java.util.HashMap;import java.util.HashSet;import java.util.Map;import CtCILibrary.AssortedMethods;/** * You原创 2013-12-13 04:43:49 · 2268 阅读 · 0 评论 -
Stack_Queue 两个栈实现一个队列 @CareerCup
原文:Implement a MyQueue class which implements a queue using two stacks.译文:使用两个栈实现一个队列MyQueue。思路:建两个栈,stackNewest和stackOldest。要始终保持:stackNewest的栈顶总是存放着最新的元素,stackOldest的栈顶总是存放原创 2014-03-02 05:11:34 · 1618 阅读 · 0 评论 -
Stack_Queue 猫狗队列问题 Cat dog queue @CareerCup
An animal shelter holds only dogs and cats, and operates ona strictly “first in, first out” basis. People must adopt either the “oldest”(based on arrival time) of all animals at the shelter, or they原创 2014-03-02 06:43:41 · 2965 阅读 · 0 评论 -
Recursion 字符串的全排列 String Permutation @CareerCup
字符串全排列的题目,还是套用模板,同样要注意ret的size问题会变化。而且与上一题不同的是不光是要在ret后面添加进新的组合,而且还要移除前面用过的组合。类似一个队列。另外Java的substring中区间闭合情况是左闭右开 [ ) 所以想把一个字符串拆成两个区间就可以用这一句:for(int j=0; j<=tmp.length(); j++){ // substring原创 2013-11-27 05:03:11 · 2845 阅读 · 0 评论 -
LinkLists 检查一个链表是否为回文 Check if a linked list is palindrome @CareerCup
Implement a function to check a linked list is a palindrome检查一个链表是否为回文思路:1 Iterative,利用栈,把链表前半段存入栈,再逐个弹栈和链表后半段比较。注意链表长度为奇数的情况!要跳过中间节点!2 递归!定义递归函数为 Result rec(LinkedListNode head, int l原创 2014-03-01 06:31:46 · 2800 阅读 · 0 评论 -
Recursion 求所有子集 @CareerCup
这道题可以用递归和迭代两种方法来做。先说一下有收获的地方:在递归中,更经常的采用的是头递归,即调用先递归处理子问题,然后基于子问题的解再处理当前问题!并且这样还能减少stack中保存的内容。当然如果是比较简单的递归,即当前问题不依赖于子问题的解,如前面的那道findMagicIndex问题,就可以用尾递归。还有一点是,因为我在递归中ret值是不断往下传递的,所以原创 2013-11-27 01:53:30 · 2209 阅读 · 1 评论 -
Tree_Graph LCA(Lowest Common Ancestor) 最低公共节点 (BST或者一般树) @CareerCup
原文:Design an algorithm and write code to find the first common ancestor of two nodes in a binary tree. Avoid storing additional nodes in a data structure. NOTE: This is not necessarily a binary se原创 2014-03-04 08:48:32 · 2493 阅读 · 0 评论 -
Tree_Graph 判断T2是否为T1的子树 @CareerCup
原文:You have two very large binary trees: T1, with millions of nodes, and T2, with hundreds of nodes. Create an algorithm to decide if T2 is a subtree of T1译文:有两棵很大的二叉树:T1有上百万个结点,T2有上百个结点。写原创 2014-03-04 10:27:07 · 3366 阅读 · 0 评论 -
Tree_Graph 打印所有和为定值的路径 @CareerCup
原文:You are given a binary tree in which each node contains a value. Design an algorithm to print all paths which sum up to that value. Note that it can be any path in the tree - it does not have t原创 2014-03-04 11:18:10 · 1929 阅读 · 2 评论 -
Tree_Graph BST每层节点构成链表 (BFS新模板) @CareerCup
原文:Given a binary search tree, design an algorithm which creates a linked list of all the nodes at each depth (i.e., if you have a tree with depth D, you’ll have D linked lists).译文:给定一棵二叉查原创 2014-03-03 04:02:55 · 1861 阅读 · 0 评论 -
Tree_Graph Inorder Successor in Binary Search Tree BST中找中序遍历的后继节点 @CareerCup
原文:Write an algorithm to find the ‘next’ node (i.e., in-order successor) of a given node in a binary search tree where each node has a link to its parent.译文:给定二叉查找树的一个结点, 写一个算法查找它的“下一个”结点(原创 2014-03-04 07:00:54 · 2197 阅读 · 0 评论 -
Tree_Graph 有向图是否存在路径 @CareerCup
原文:Given a directed graph, design an algorithm to find out whether there is a route between two nodes.译文:给定一个有向图,设计算法判断两结点间是否存在路径。思路:如果BFS就用队列如果DFS就用递归回溯,参考回溯模板:http://bl原创 2014-03-03 02:31:56 · 2031 阅读 · 1 评论 -
Tree_Graph 判断是否平衡二叉树 @CareerCup
Implement a function to check if a binary tree is balanced. For the purposes of this question, a balanced tree is defined to be a tree such that the heights of the two subtrees of any node never diffe原创 2014-03-03 01:34:39 · 1961 阅读 · 0 评论 -
Tree_Graph Validate Binary Search Tree 检测一个BST是否有效 @CareerCup
Implement a function to check if a binary tree is a binary search tree判断一个二叉树是否是BST思路:1)中序遍历二叉树,把结果放在一个数组里。然后判断这个数组是否递增2)在上一种方法的基础上优化,无需用到数组。在中序遍历时与上一个数比较,判断是否恒递增3)我最喜欢的方法:min max的方法,限定每原创 2014-03-03 08:56:37 · 1913 阅读 · 0 评论 -
Tree_Graph 有序数组转BST @CareerCup
原文:Given a sorted (increasing order) array, write an algorithm to create a binary tree with minimal height.译文:给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。思路:因为是有序的数组,所以直接提取中数为root,然后递归建立其左子树和右子树原创 2014-03-03 03:02:16 · 1125 阅读 · 0 评论 -
Stack_Queue 一个数组实现三个栈 @CareerCup
原文:Describe how you could use a single array to implement three stacks.译文:你如何只用一个数组实现三个栈?分两种情况:1)固定的栈,即栈和栈之间无法共享空间,每个栈都只有固定的空间。用n个栈顶指针来记录栈顶位置即可。2)非固定的栈:有必要构造一个StackData的类来存放关原创 2014-03-01 11:35:27 · 2239 阅读 · 0 评论 -
Stack_Queue 把栈排序 Sort a stack @CareerCup
原文:Write a program to sort a stack in ascending order. You should not make any assumptions about how the stack is implemented. The following are the only functions that should be used to write thi原创 2014-03-02 06:23:27 · 3090 阅读 · 0 评论 -
Stack_Queue 固定容量的栈组SetOfStacks @CareerCup
原文:Imagine a (literal) stack of plates. If the stack gets too high, it might topple. Therefore, in real life, we would likely start a new stack when the previous stack exceeds some threshold. Impl原创 2014-03-02 04:01:00 · 2030 阅读 · 0 评论 -
Stack_Queue 汉诺塔Hanoi问题 @CareerCup
原文:In the classic problem of the Towers of Hanoi, you have 3 rods and N disks of different sizes which can slide onto any tower. The puzzle starts with disks sorted in ascending order of size from原创 2014-03-02 04:43:55 · 1312 阅读 · 0 评论 -
Hard 动态查找中位数 @CareerCup
用大小堆实现插入O(logn),查询O(1)的算法,注意invariant是大堆的size一定是与小堆相等或者比小堆大一。另外大堆存放所有小等于中位数的值,小堆存放所有大于中位数的值。package Hard;import java.util.Arrays;import java.util.Comparator;import java.util.PriorityQueue;原创 2013-12-13 13:02:47 · 1940 阅读 · 0 评论 -
Hard 单词变型成另一个单词 @CareerCup
对起始单词的每一个字母都做替换,把替换后的单词加入到queue中,并同时维护一个Map来记录变化前单词和变化后单词的联系。用来回溯时能打印出路径。package Hard;import java.util.HashSet;import java.util.LinkedList;import java.util.Map;import java.util.Queue;impor原创 2013-12-13 14:47:08 · 4583 阅读 · 0 评论 -
Moderate 判断井字游戏的胜利 @CareerCup
基于要查找的次数来决定是否要预处理。预处理方式按照3进制来做。另外,检查是否赢了要判断横行,纵列,正反对角线package Moderate;/** * Design an algorithm to figure out if someone has won in a game of tic-tac-toe.译文:设计算法检查某人是否赢得了井字游戏。 *原创 2013-12-02 07:12:59 · 2854 阅读 · 0 评论 -
Moderate 不用比较符返回较大的数 @CareerCup
通过判断a-b的最高位来知道哪一个数比较大但是要注意overflow的情况if a and b have different signs: // if a > 0, then b < <d, and k = l. // if a 0, and k = 0. // so either way, k = sign(a) let k = sign(a)else let k原创 2013-12-02 07:57:03 · 1597 阅读 · 0 评论 -
Sorting_Searching 叠罗汉 @CareerCup
类似前面的一道堆箱子普适的解法是回溯,注意这类是求最值的回溯题。另一种解法是LIS,先把其中一维排序,然后对剩下的一维进行LISpackage Sorting_Searching;import java.util.ArrayList;import java.util.Collections;/** * A circus is designing a tower r原创 2013-11-30 04:36:20 · 2331 阅读 · 0 评论