Amazon Interview Question

Given 2 numbers. Find if they are consecutive grey code sequences

Interview Answers

Anonymous

Jun 2, 2017

public static int isGrayCode(int n1, int n2) { int x = n1^n2; int nbits = 0; while (x != 0) { if (nbits > 1) return 0; nbits += (x & 1); x >>= 1; } return nbits==1? 1:0; }

4

Anonymous

Nov 22, 2014

Any suggestions to prepare for the test? Can you give an overview for the logical test? Thanks in advance.

1

Anonymous

Nov 23, 2014

public static void main(String[] args) { int num1 = 4, num2 = 7; String s1 = Integer.toBinaryString(num1); String s2 = Integer.toBinaryString(num2); //System.out.println(s1); int i1 = Integer.parseInt(s1); //System.out.println(i1); int i2 = Integer.parseInt(s2); //System.out.println("Intger value of num2 is " + i2); int n1[] = new int[32]; int sum1 = 0;int sum2 = 0;int diff1 = 0; while (i1 != 0){ sum1 = sum1 + i1%10; i1 = i1/10; } while (i2 != 0){ sum2 = sum2 + i2%10; i2 = i2/10; } System.out.println("sum1 is " + sum1); System.out.println("sum2 is " + sum2); if(sum1 > sum2){ diff1 = sum1 - sum2; }else{ diff1 = sum2 - sum1; } if(diff1 > 0 && diff1 < 2){ System.out.println("They are consecutive gray code seq"); }else System.out.println("They are not consecutive gray code seq"); } } //The problem with this code is it will not work if any number is 0.Please correct it if u can.

Anonymous

Dec 5, 2014

static boolean isSequence(int num1,int num2) { if(num1>num2) return isSequence(num2,num1); boolean diff=false; while(num2>0) { if((num2&1)!=(num1&1)) { if(diff) return false; else diff=true; } num2=num2/10; num1=num1/10; } return diff; }

Anonymous

Feb 18, 2015

Hi, Can you please tell about the reasoning question asked in the test. Thank you.