Skip to main content

Posts

Showing posts from June, 2012

3Sum

given 3 arrays, array a, array b, array c. find all pairs where a[i] + b[j] = c[k] a, b , c are sorted. A matching quadratic solution is available on wiki, please visit this link: http://en.wikipedia.org/wiki/3SUM

Missing integer(s) in the array

You have given two array e.g. A[] and B[]. Difference between two arrays that A[] have two additional numbers than B[]. both the array is randomized and not in order.   We have to find out both the number in array A[] in most effcient way. Dont try to sort and compare as  time complexity is nlogn. Need a faster solution. Assume We have elements in array A are a0, a1, a2, ................an And Array B are b0, b1, b2, b3.....................bn. Now as per above condition all the elements of B  already  present with A. So we can represent like A[] = B[]+ai+aj where ai and aj is the missing number. Step1: XOR all the elements for A[] XOR B[]. So result will ai XOR aj as remaining elements will be removed by XOR.  Step2: Now take any bit set in above result. Assume we have result in variable result. Any bit set in result will be either set in ai or aj. Can not be in both the variable.  Assume set bit is 5th bit. A B XOR 0  0   0 0  1   1

One way : Heap or Stack allocation

Took my time to find solution for this and it actually made me realize how much i have to learn. Now question is how can we enforce the creation of objects whether on heap or stack. Creating object on Heap only. Make your destructor private and create a destroy function. Class A {  ~A(){} public:  A(){} void destroy() { delete this; } } Now if you can not create your object: A a; // error: 'A::~A()' is private A  a = new A(); Great. Now all the objects will be allocated to heap only. Making destructor private a better choice than constructor as we don't know number of constructor so early in programming. Creating object on stack While i knew that it has to do something with operator new, but could not figure out how can i create object on stack and return the memory back to class initialization. Though answer was simple, i had to google for that: Overload operator new, new[], operator delete and delete[] and make them private ;) class A { priv