Sunday, April 22, 2012
Given a number. And one permutation of that number. Find out in how many steps can you get back to the original number from the permutation if you use the same mapping again and again. If its not possible, then state so.
Example: 2315 -> 5213
So in this example Mapping is number at 1st index -> 2nd index
2nd index -> 4th index
3rd index -> 3rd index
4th index -> 1st index
So using same mapping can we come back to 2315. If yes then in how many steps?
So in this example Mapping is number at 1st index -> 2nd index
2nd index -> 4th index
3rd index -> 3rd index
4th index -> 1st index
So using same mapping can we come back to 2315. If yes then in how many steps?
Labels:Data
Amazon Interview
Given a dictionary of strings [ strings are in sorted order] you have to find the precedence of characters according to the dictionary..
e.g.
eat
bxy
e is ranked above b according to the dictionary
eat
bxy
e is ranked above b according to the dictionary
Labels:Data
Google Interview
Tuesday, April 17, 2012
Never Stop Hacking- A Good Post After Long Time :)
Though it comes out from some other programmer's heart but its pretty much reflects my life so thought to share it with readers .A must read for programmers :)
This is a quick post, something that I have to get out of my mind and onto paper (err, the internets!).
I was thinking earlier today about what makes me happy--really, truly happy. I had just stopped coding, and was feeling frustrated that my builds weren't working like I had hoped. I decided to go onto IRC for some procrastination, and ended up chatting with a really good friend.
My friend (who will remain unnamed), is an extremely smart fellow. One of the smartest I've ever had the pleasure of talking to. He's a fucking amazing programmer, always positive, and constantly learning new things. As we were talking about programming, I started to feel better. I started to feel excited. My frustration began to melt away, and all that was left was desire.
The desire to learn new things. The desire to build something that has never before been built. The desire to hunt down problems--and then solve them.
It was at this moment I realized something. Something which, to me, is an incredibly powerful revelation. Often times, I find myself hunting for solutions. I find myself desperately trying to figure out what I should do about X, and how to optimize Y. I find myself searching for solutions to problems, hoping to get them out of the way as quickly as possible so that I can move onto the next thing, the next chore, the next item on my todo list. It was in this moment that it all became clear to me--
I enjoy the problems. I crave them.
The more I focus on solutions, the more I treat them as a chore, as a task that needs to be finished--the more stressed and frustrated I become. It is only when I focus on the experience, the act of learning something new and hunting down problems, that I feel really, truly happy.
As programmers, we're given a unique gift: the ability to spend a majority of our time learning things and solving problems. The next time I'm feeling stressed, frustrated, or even angry--I'm going to remember that it's the process I really enjoy--that the process of learning new things is what really motivates me, and makes me love what I do so much.
Never stop hacking
Source Never Stop Hacking
Labels:Data
Never Stop Hacking
Sunday, April 1, 2012
GIven a 2D NxN matrix, visualize it as concentric circles. You have to find the rotated matrix where each element in the circle is rotated by 1 position layer by layer in an alternate clockwise and anticlockwise direction.
For Example
Input:
4
2 3 4 5
1 6 7 8
4 2 1 9
5 3 2 4
Output:
1 2 3 4
4 7 1 5
5 6 2 8
3 2 4 9
Labels:Data
Amazon Interview
Monday, February 27, 2012
Write an algorithm that prints an unordered sets of k elements chosen from a set of size n.
Example, let the size of the give set be n and set = {0, 1, 2, 3, 4} and we need to find all the subsets of size 3, then there will be a total of 10 such subsets given as:
{0, 1, 2}
{0, 1, 3}
{0, 1, 4}
{0, 2, 3}
{0, 2, 4}
{0, 3, 4}
{1, 2, 3}
{1, 2, 4}
{1, 3, 4}
{2, 3, 4}
{0, 1, 2}
{0, 1, 3}
{0, 1, 4}
{0, 2, 3}
{0, 2, 4}
{0, 3, 4}
{1, 2, 3}
{1, 2, 4}
{1, 3, 4}
{2, 3, 4}
Labels:Data
Facebook Interview
,
Google Interview
,
Microsoft Interview
,
Recursion
Sunday, February 26, 2012
Fastest Super Computer is From Japan Till Today :) ,its K Computer
Japanese supercomputer becomes world’s fastest and first to clear 10 petaflops
The
fastest got faster, as the K Computer topped its own record on the
twice-yearly supercomputer speed test by scoring 10.51 quadrillion
calculations per second
(Credit: chart by Stephen Shankland; data from Top500.org)
The rankings of the 10 fastest machines didn't change at all on today's new version of the Top500 supercomputer list, but the top dog cleared the notable performance hurdle of 10 petaflops.
"Flops"
stands for floating-point operations per second and is a measure of how
fast a supercomputer can perform mathematical calculations using the
Linpack benchmark. The K Computer, at the Riken Advanced Institute for
Computational Science in Japan, moved up from 8.16 petaflops, the score
it used to reach the top of the twice-yearly supercomputer ranking last
June, to 10.51 petaflops.
It reached the new top speed through being fully assembled, with all 705,024 of its Fujitsu Sparc64 processor cores running.
The
Tianhe-1A in China, a former No. 1 machine at 2.57 petaflops, remains
No. 2. It uses a combination of Intel central processing units and
Nvidia graphical processing units. The United States is the top market
for supercomputers on the list, but China is in second place, list
organizers said.
Intel remains king of the heap when it comes to processor designs, supplying chips for 384 of the systems.
Among other aspects of the November 2011 list:
•
Even though the top 10 machines remained the same--a first since the
Top500 list began in 1993--there was still plenty of flux elsewhere on
the list. The bottom of the barrel for the November list ranked No. 305
in June, and the total performance of all 500 machines rose from 58.7
petaflops to 74.2 petaflops.
•
It's now required 50.9 teraflops to get on the list at all. That score
beats the top system from 2004. The scores, though somewhat simplify the
broad range of computing work that researchers strive to accomplish on
these massive systems.
•
A total of 39 systems now us graphics chips as accelerators for some
computing tasks. That's the approach employed by a forthcoming Cray-built system with AMD 16-core processors and Nvidia Tesla chips slated for shipment to the National Center for Supercomputing Applications.
• IBM supplied 223 of the 500 systems and Hewlett-Packard supplied 146.
•
At least 29 of the systems gulp down more than 1 megawatt of
power--enough to power 10,000 100-watt light bulbs. The K Computer
consumes 12.66 megawatts, but it's "one of the most efficient systems on
the list," with a performance of 830 megaflops per watt, the list
organizers said.
Labels:Data
Computer Science
,
Super Computer
Thursday, February 23, 2012
Complete the function getFirstLetterWord,
Complete the function getFirstLetterWord, which takes in a string text,consisting of only lowercase letters and spaces. A word is a maximal sequence of consecutive letters. There may be multiple spaces between words. Also, text may contain only spaces.
The function getFirstLetterWord is expected to return the word which is formed by concatenating the first letter from each word in text, in the order they appear.Return an empty string is no word is possible
Sample Test Cases:
Input #00:
the quick brown fox jumped over the lazy dog
Output #00:
tqbfjotld
Explanation:
Picking up the 1st character from each of the words in the sentence, we get, tqbfjotld
Input #01:
dice gambling las vegas
Output #01:
dglv
Explanation:
Ignore multiple spaces, picking the 1st character from dice, gambling, las and vegas results in dglv
The function getFirstLetterWord is expected to return the word which is formed by concatenating the first letter from each word in text, in the order they appear.Return an empty string is no word is possible
Sample Test Cases:
Input #00:
the quick brown fox jumped over the lazy dog
Output #00:
tqbfjotld
Explanation:
Picking up the 1st character from each of the words in the sentence, we get, tqbfjotld
Input #01:
dice gambling las vegas
Output #01:
dglv
Explanation:
Ignore multiple spaces, picking the 1st character from dice, gambling, las and vegas results in dglv
import java.io.FileReader; class WordCount { public static void main(String args[]) throws Exception { String text="dice gambling las vegas";//"the quick brown fox jumped over the lazy dog"; char ch[]=new char[text.length()]; char c; boolean lastWhite = true; String whiteSpace = " \t"; int i=0; for(i=0;i<text.length();i++) { c=text.charAt(i); int index = whiteSpace.indexOf(c); if (index == -1) { if (lastWhite == true) { ch[i]=c; } lastWhite = false; } else { lastWhite = true; } } String ss = new String(ch); System.out.println(ss); } }
Run Here http://ideone.com/zVquq
WAP to Count Tottal number of Characters, Words and Lines in File Efficiently
Guys Think its Funny & Can be solved Easily..but when interviewer ask how u counts no of words when u have more then 1 spaces or tabs,line feeds or new lines , i mean white spaces ?? Its Asked Recently from one of the my friend in Amazon & Adobe Both
here is the solution i have taken car of such Scenario
import java.io.FileReader;
class WordCount {
public static void main(String args[]) throws Exception {
int words = 0;
int lines = 0;
int chars = 0;
FileReader fr = new FileReader("E:/ubuntu/tests.txt");
int c = 0;
boolean lastWhite = true;
String whiteSpace = " \t\n\r";
char sp=' ';
char tab=' ';
char lin='\n';
char ret='\r';
System.out.println(" " +(int)sp + " " + (int)tab + " " + (int)lin + " " + (int)ret);
while ((c = fr.read()) != -1)
{
chars++;
System.out.println(c);
if (c == '\n')
{
lines++;
}
int index = whiteSpace.indexOf(c);
//icrement word count when 1st time index of any spaces occurs -1 so set next
//using boolena value lastwhite time it to false
if (index == -1)
{
if (lastWhite == true)
{
++words;
}
lastWhite = false;
}
else
{
lastWhite = true;
}
System.out.println("chars" + chars + " words" + words + " lines " + lines);
}
/*if (chars != 0)
{
++lines;
}*/
}
}
here is the solution i have taken car of such Scenario
import java.io.FileReader;
class WordCount {
public static void main(String args[]) throws Exception {
int words = 0;
int lines = 0;
int chars = 0;
FileReader fr = new FileReader("E:/ubuntu/tests.txt");
int c = 0;
boolean lastWhite = true;
String whiteSpace = " \t\n\r";
char sp=' ';
char tab=' ';
char lin='\n';
char ret='\r';
System.out.println(" " +(int)sp + " " + (int)tab + " " + (int)lin + " " + (int)ret);
while ((c = fr.read()) != -1)
{
chars++;
System.out.println(c);
if (c == '\n')
{
lines++;
}
int index = whiteSpace.indexOf(c);
//icrement word count when 1st time index of any spaces occurs -1 so set next
//using boolena value lastwhite time it to false
if (index == -1)
{
if (lastWhite == true)
{
++words;
}
lastWhite = false;
}
else
{
lastWhite = true;
}
System.out.println("chars" + chars + " words" + words + " lines " + lines);
}
/*if (chars != 0)
{
++lines;
}*/
}
}
Labels:Data
Adobe Question
,
Amazon Interview
WAP to Print a Binary tree in level order with a new line after every level.
Data Structure Used Queue
Algorithm Shown Below
printLevelorder(tree)
Initialize the global variable size=0
1) Create an empty queue q
2) temp_node = root /*start from root*/ & initialize the local variable cur_size=0
3) Loop while temp_node is not NULL
A) print temp_node->data.
B) Enqueue temp_node’s children (first left then right children) to q
C) After this check cur_size is equals to zero or not
if(cur_size==0)set cur_size=size of queue(no of elements at that time in queue
D) Dequeue a node from q and assign it’s value to temp_node
E) Decrement the cur_size until it become zero so that we can re-initialize it
again with new size of queue.
#include
#include
#define MAX_Q_SIZE 100
/* A binary tree node has data, pointer to left child
and a pointer to right child */
struct node
{
int data;
struct node* left;
struct node* right;
};
/* frunction prototypes */
struct node** createQueue(int *, int *);
void enQueue(struct node **, int *, struct node *);
struct node *deQueue(struct node **, int *);
int size=0;
/* Given a binary tree, print its nodes in level order
using array for implementing queue */
void printLevelOrder(struct node* root)
{
int rear, front;
struct node **queue = createQueue(&front, &rear);
struct node *temp_node = root;
int nsize=0;
while(temp_node)
{
printf("%d ", temp_node->data);
/*Enqueue left child */
if(temp_node->left)
enQueue(queue, &rear, temp_node->left);
/*Enqueue right child */
if(temp_node->right)
enQueue(queue, &rear, temp_node->right);
if(nsize==0)
{
nsize=size;
printf( " \n ");
}
/*Dequeue node and make it temp_node*/
temp_node = deQueue(queue, &front);
nsize--;
}
}
/*UTILITY FUNCTIONS*/
struct node** createQueue(int *front, int *rear)
{
struct node **queue =
(struct node **)malloc(sizeof(struct node*)*MAX_Q_SIZE);
*front = *rear = 0;
return queue;
}
void enQueue(struct node **queue, int *rear, struct node *new_node)
{
queue[*rear] = new_node;
(*rear)++;
size++;
}
struct node *deQueue(struct node **queue, int *front)
{
(*front)++;
size--;
return queue[*front - 1];
}
/* Helper function that allocates a new node with the
given data and NULL left and right pointers. */
struct node* newNode(int data)
{
struct node* node = (struct node*)
malloc(sizeof(struct node));
node->data = data;
node->left = NULL;
node->right = NULL;
return(node);
}
/* Driver program to test above functions*/
int main()
{
struct node *root = newNode(1);
root->left = newNode(2);
root->right = newNode(3);
root->left->left = newNode(4);
root->left->left->left = newNode(41);
root->left->right = newNode(5);
root->right->left = newNode(6);
root->right->right = newNode(7);
root->right->right->right = newNode(71);
printf("Level Order traversal of binary tree is \n");
printLevelOrder(root);
getchar();
return 0;
}
Time Complexity O(n)
Space Complexity O(1)
Run Here https://ideone.com/FLgSI
Algorithm Shown Below
printLevelorder(tree)
Initialize the global variable size=0
1) Create an empty queue q
2) temp_node = root /*start from root*/ & initialize the local variable cur_size=0
3) Loop while temp_node is not NULL
A) print temp_node->data.
B) Enqueue temp_node’s children (first left then right children) to q
C) After this check cur_size is equals to zero or not
if(cur_size==0)set cur_size=size of queue(no of elements at that time in queue
D) Dequeue a node from q and assign it’s value to temp_node
E) Decrement the cur_size until it become zero so that we can re-initialize it
again with new size of queue.
#include
#include
#define MAX_Q_SIZE 100
/* A binary tree node has data, pointer to left child
and a pointer to right child */
struct node
{
int data;
struct node* left;
struct node* right;
};
/* frunction prototypes */
struct node** createQueue(int *, int *);
void enQueue(struct node **, int *, struct node *);
struct node *deQueue(struct node **, int *);
int size=0;
/* Given a binary tree, print its nodes in level order
using array for implementing queue */
void printLevelOrder(struct node* root)
{
int rear, front;
struct node **queue = createQueue(&front, &rear);
struct node *temp_node = root;
int nsize=0;
while(temp_node)
{
printf("%d ", temp_node->data);
/*Enqueue left child */
if(temp_node->left)
enQueue(queue, &rear, temp_node->left);
/*Enqueue right child */
if(temp_node->right)
enQueue(queue, &rear, temp_node->right);
if(nsize==0)
{
nsize=size;
printf( " \n ");
}
/*Dequeue node and make it temp_node*/
temp_node = deQueue(queue, &front);
nsize--;
}
}
/*UTILITY FUNCTIONS*/
struct node** createQueue(int *front, int *rear)
{
struct node **queue =
(struct node **)malloc(sizeof(struct node*)*MAX_Q_SIZE);
*front = *rear = 0;
return queue;
}
void enQueue(struct node **queue, int *rear, struct node *new_node)
{
queue[*rear] = new_node;
(*rear)++;
size++;
}
struct node *deQueue(struct node **queue, int *front)
{
(*front)++;
size--;
return queue[*front - 1];
}
/* Helper function that allocates a new node with the
given data and NULL left and right pointers. */
struct node* newNode(int data)
{
struct node* node = (struct node*)
malloc(sizeof(struct node));
node->data = data;
node->left = NULL;
node->right = NULL;
return(node);
}
/* Driver program to test above functions*/
int main()
{
struct node *root = newNode(1);
root->left = newNode(2);
root->right = newNode(3);
root->left->left = newNode(4);
root->left->left->left = newNode(41);
root->left->right = newNode(5);
root->right->left = newNode(6);
root->right->right = newNode(7);
root->right->right->right = newNode(71);
printf("Level Order traversal of binary tree is \n");
printLevelOrder(root);
getchar();
return 0;
}
Time Complexity O(n)
Space Complexity O(1)
Run Here
Labels:Data
Amazon Interview
,
Facebook Interview
Subscribe to:
Posts
(
Atom
)