cracking the coding interview
tangyifei1991
这个作者很懒,什么都没留下…
展开
-
JVM面试
关于JVM面试所必须知道的内容一、在Java中主要有一下三种类加载器:引导类加载器(bootstrap class loader) --用来加载java 的核心库(String 、Integer、List。。。)在jre/lib/rt.jar路径下的内容,是用C代码来实现的,并不继承自java.lang.ClassLoader。 --加载扩展类和应用程序类加载器。并指定他们的父类加载器。扩展类...原创 2018-02-20 19:32:37 · 884 阅读 · 0 评论 -
平衡树1
struct TreeNode{int val;TreeNode *left;TreeNode *right;}int getHeight(TreeNode *root){if (root==NULL)return 0;return max(getHeight(root->left),getHeight(root->right))+1;}原创 2014-05-27 10:09:52 · 319 阅读 · 0 评论 -
升序栈
stack SortStack(stack r){stack s;while(!r.empty()){int tmp=r.top();r.pop();while(!s.empty()&&s.top()>tmp){s.pop();r.push(s.top());}s.push(tmp);}return r;}原创 2014-05-26 22:41:44 · 309 阅读 · 0 评论 -
两个数字相加
public class Shift {public static int add(int a,int b){if(b==0)return a;int sum=a^b;int carry=(a&b)return add(sum,carry);}}原创 2014-06-09 11:17:40 · 429 阅读 · 0 评论 -
两个单词之间的最短距离
// Shuffle.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include#includeusing namespace::std;int shortest(vector &text,string word1,string word2){int min=INT_MAX;int la原创 2014-06-09 20:25:37 · 1041 阅读 · 0 评论 -
两个栈实现一个队列
template class MyQueue{public:MyQueue(){stackNew=new stack();stackOld=new stack();}~MyQueue(){delete stackNew;delete stackOld;}void push(T val){stackNew.push(val);原创 2014-05-26 13:45:19 · 244 阅读 · 0 评论 -
随机生成数字,并记录中位数
// Median.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include#includeusing namespace::std;class Median{private:priority_queue,less> maxheap; //12345priority_queue,原创 2014-06-10 16:36:37 · 492 阅读 · 0 评论 -
随机地从大小n的数组中选出m个整数
void swap(int &a,int &b){int t=b;b=a;a=t;}void RandomlyPick(int *a,int n,int m){for(int i=0;i{int j=rand()%(n-i)+i;swap(a[i],a[j]);}}原创 2014-06-09 15:39:53 · 358 阅读 · 0 评论 -
栈的pop,min,push
class stack{public:stack(int size=100){ buff=new int[size];cur=-1;}~stack(){delete[] buff;}void push(int val){buff[++cur]=val;}void pop(){--cur;}原创 2014-05-26 11:11:41 · 374 阅读 · 0 评论 -
这些单词能否由其它单词组合
package com.crack;import java.util.Arrays;import java.util.HashMap;public class BuildWord {boolean canBuildWord(String str,boolean isOriginal,HashMap map){if(map.containsKey(str)&&原创 2014-06-10 11:31:24 · 447 阅读 · 0 评论 -
随机洗牌函数
void swap(int &a,int &b){int tmp=b;b=a;a=tmp;}void RandomShuffle(int *a,int n){for(int i=0;i{int j=rand()%(n-i)+i;//产生i到n-1间的随机数swap(a[i],a[j]);}}原创 2014-06-09 14:54:17 · 407 阅读 · 0 评论 -
判断一颗树是否是另外一个树的子树
bool containsTree(TreeNode *r,TreeNode *t){if(t==NULL)return true;return subTree(r,t);}bool subTree(TreeNode *r,TreeNode *t){if(r==NULL)return false;if(r->val==t->val)retur原创 2014-05-27 11:05:29 · 383 阅读 · 0 评论 -
找出最小的100万数字
// Shuffle.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include#includeusing namespace::std;int partition(int *array,int left,int right,int pivot){while(true){while(原创 2014-06-09 22:48:12 · 581 阅读 · 0 评论 -
两个结点之间是否存在一条路径
int maxnum=100;vector> graph=vector>(maxnum,vector(maxnum,false));vector visited= vector(maxnum,false);int n;queue q;bool search(int start,int end){q.push(start);visited[start]=tru原创 2014-06-03 11:00:11 · 1066 阅读 · 0 评论 -
元素总和最大的子矩阵
package com.crack;public class SubSquareThree {public static void clearArray(int[] array){for(int i=0;i{array[i]=0; }}public static int maxsubarray(int[] array,int n){int原创 2014-06-12 13:33:47 · 494 阅读 · 0 评论 -
下一个结点
struct TreeNode{int val;TreeNode *left;TreeNode *right;TreeNode *parent;};TreeNode *leftMostChild(TreeNode *node){if(node==NULL)return NULL;while(node->left!=NULL){node=n原创 2014-05-28 14:12:27 · 298 阅读 · 0 评论 -
创建一颗最小二叉查找树
struct TreeNode{int val;TreeNode *left;TreeNode *right;TreeNode(int x):val(x),left(NULL),right(NULL){}};TreeNode *createBST(vector arr,int start,int end){if(start>end)retur原创 2014-05-28 10:26:11 · 329 阅读 · 0 评论 -
节点数值总和等于某个给定值的所有路径
struct TreeNode{int val;TreeNode *left;TreeNode *right;};int depth(TreeNode *node){if(node==NULL)return 0;return 1+max(depth(node->left),depth(node->right));}void print(int原创 2014-05-27 22:31:10 · 556 阅读 · 0 评论 -
四条边为黑色元素的最大子方阵
package com.crack;public class Square {boolean isSquare(int[][] matrix,int row,int col,int size){for(int j=0;j{if(matrix[row][col+j]==1)return false;if(matrix[row+size-1][col+j]==1原创 2014-06-10 20:14:16 · 554 阅读 · 0 评论 -
某一深度上所有结点的链表
package com.NodePair;import java.util.LinkedList;import java.util.ArrayList;import javax.swing.tree.TreeNode;public class CreateLinkedList {ArrayList> CreateLinkList(TreeNode root)原创 2014-05-28 15:41:44 · 439 阅读 · 0 评论 -
平衡树
struct TreeNode{int val;TreeNode *left;TreeNode *right;}int getHeight(TreeNode *root){if(root==NULL)return 0;int leftHeight=getHeight(root->left);if(leftHeight==-1)return -原创 2014-05-27 10:29:57 · 188 阅读 · 0 评论 -
单词台阶
package com.crack;import java.util.HashMap;import java.util.HashSet;import java.util.LinkedList;import java.util.Queue;import java.util.Set;import java.util.TreeMap;import java.util.原创 2014-06-11 12:51:43 · 370 阅读 · 0 评论 -
最低公共祖先
struct TreeNode{int val;TreeNode *left;TreeNode *right;};bool covers(TreeNode *root,TreeNode *p){if(root==NULL)return false;if(root==p)return true;return covers(root->left,原创 2014-05-27 14:21:34 · 244 阅读 · 0 评论 -
变位词排在相邻的位置
package com.crack;import java.util.HashMap;import java.util.LinkedList;public class Sort {public void sort(String[] array){ HashMap> table=new HashMap>(); for(String s:array)原创 2014-06-07 15:31:04 · 389 阅读 · 0 评论 -
分布式缓存
package com.NodePair;import java.util.HashMap;public class Cache {public static int MAX_SIZE=10;public Node head,tail;public HashMap map;public int size=0;public Cache(){map=new Ha原创 2014-06-06 21:32:36 · 251 阅读 · 0 评论 -
是否赢得井字游戏
package com.crack;public class HasWon {int hasWon(int[][] board){int N=board.length;int row=0;int col=0;for(row=0;row{for(col=1;col{if(board[row][col]!=board[row][col-1])br原创 2014-06-08 11:09:53 · 885 阅读 · 0 评论 -
打印数组中的重复元素
package com.NodePair;public class BitSet {int[] bitset;public BitSet(int size){bitset=new int[size>>5]; }void set(int pos){int arraynumber=pos>>5;int bitnumber=pos&0x1f;bitset[ar原创 2014-06-05 22:44:55 · 1685 阅读 · 0 评论 -
八皇后问题
package com.NodePair;import java.util.ArrayList;public class Queens {int gridsize=8;public static boolean ValidCheck(Integer[] columns,int row1,int column1){for(int row2=0;ro原创 2014-06-04 23:03:43 · 288 阅读 · 0 评论 -
硬币
package com.NodePair;public class Coin {public int makechange(int n,int num){int nextnum=0;switch(num){case 25:nextnum=10;break;case 10:nextnum=5;break;case 5:nextnum=1原创 2014-06-04 11:17:35 · 303 阅读 · 0 评论 -
素因子有3,5,7 找出第k个数
package com.NodePair;import java.util.LinkedList;import java.util.Queue;public class KthMagicNumber {public static int getKthMagicNumber(int k){if(kreturn 0;int val=0;Queue q原创 2014-06-03 21:25:36 · 4189 阅读 · 0 评论 -
魔术索引
package com.NodePair;public class MagicIndex {public static int MagicIndex(int[] array,int start,int end){ start=0; end=array.length-1;while(start{int mid=(start+end)/2;int midv原创 2014-06-04 10:33:19 · 417 阅读 · 0 评论 -
压缩字符串
string compress(string str){string ret="";char last=str[0];int count=1;for(int i=1;i{if(last==str[i])//找到重复字符{count++;}else{char tmp=count+'0';ret+=last+tmp;last=str[i];原创 2014-05-14 22:03:55 · 291 阅读 · 0 评论 -
检查链表是否是回文
struct ListNode{int val;ListNode *next;ListNode(int x):val(x),next(NULL){}};bool isPalindrome(ListNode *head){ListNode *slow=head;ListNode *fast=head;stack st;while(fast!=NULL&&f原创 2014-05-15 10:20:32 · 352 阅读 · 0 评论 -
散列表
package com.NodePair;public class Cell {private K key;private V value;public Cell(K k,V v){key=k;value=v;}public boolean equivalent(K k){return key.equals(k); }pu原创 2014-06-03 22:45:41 · 333 阅读 · 0 评论 -
两点之间是否存在一条路径
public class BFS {public enum State{Unvisited,Visited,Visiting; }public static boolean search(Graph g,Node start,Node end){LinkedList q=new LinkedList();q.add(start);start.state=原创 2014-06-03 10:10:50 · 1156 阅读 · 0 评论 -
数组实现栈
class stack3{public:stack3(int size){ buff=new int[3*size];stacksize=size;stackpoint[0]=stackpoint[1]=stackpoint[2]=-1;}~stack3(){delete[] buff;}void push(int stac原创 2014-05-15 13:53:51 · 227 阅读 · 0 评论 -
阶乘0的个数
int factors_aux(int i){int count=0;while(i%5==0){count++;i/=5;}return count;}int factors(int num){int count=0;for(int i=2;i{count+=factors_aux(i);}return count;原创 2014-06-06 10:18:30 · 414 阅读 · 0 评论 -
不在该文件中的整数1GB
#include "stdafx.h"#include#includeusing namespace::std;long number=(long)INT_MAX;int len=(int)(number/8);char* bitfield=new char[len];int v;void findopenNumber(){while(cin>>v)原创 2014-06-05 13:30:14 · 355 阅读 · 0 评论 -
直接交换两个数
package com.crack;public class Swap {//a=9 b=4public static void swap(int a,int b){a=a-b;//diff b=a+b;a=b-a;System.out.println("a:"+a);System.out.println("b:"+b);}}原创 2014-06-08 10:10:38 · 263 阅读 · 0 评论 -
散布着空字符串,找出给定字符串的位置
public class Search {public int search_aux(String[] strings,String str,int start,int end){if(start>end)return -1;int mid=(start+end)/2;if(strings[mid].isEmpty()){int left=mid-1;int r原创 2014-06-07 17:07:52 · 287 阅读 · 0 评论