<gouthampradhan>binary_search_SingleElementInASortedArray_1.java
public int singleNonDuplicate(int[] nums) {
    if (nums.length == 1) return nums[0];
    int l = 0, h = nums.length - 1;
    while (l <= h) {
      int m = l + ((h - l) / 2);
      int N = nums[m];
      if (m + 1 >= nums.length) {
        if (nums[m - 1] != N) {
          return N;
        }
        h = m - 1;
      } else if (m - 1 < 0) {
        if (nums[m + 1] != N) {
          return N;
        }
        l = m + 1;
      } else {
        if (m % 2 == 0) {
          if (nums[m + 1] != N && nums[m - 1] != N) {
            return N;
          } else if (nums[m + 1] != N) {
            h = m - 1;
          } else l = m + 1;
        } else {
          if (nums[m + 1] != N && nums[m - 1] != N) {
            return N;
          } else if (nums[m - 1] != N) {
            h = m - 1;
          } else l = m + 1;
        }
      }
    }
    return -1;
  }
public int sample_funcname ( int [ ] var_0 ) {
  if ( var_0 . length == 1 ) return var_0 [ 0 ] ;
  int var_4 = 0 , var_5 = var_0 . length - 1 ;
  while ( var_4 <= var_5 ) {
    int var_7 = var_4 + ( ( var_5 - var_4 ) / 2 ) ;
    int var_8 = var_0 [ var_7 ] ;
    if ( var_7 + 1 >= var_0 . length ) {
      if ( var_0 [ var_7 - 1 ] != var_8 ) {
        return var_8 ;
      }
      var_5 = var_7 - 1 ;
    }
    else if ( var_7 - 1 < 0 ) {
      if ( var_0 [ var_7 + 1 ] != var_8 ) {
        return var_8 ;
      }
      var_4 = var_7 + 1 ;
    }
    else {
      if ( var_7 % 2 == 0 ) {
        if ( var_0 [ var_7 + 1 ] != var_8 && var_0 [ var_7 - 1 ] != var_8 ) {
          return var_8 ;
        }
        else if ( var_0 [ var_7 + 1 ] != var_8 ) {
          var_5 = var_7 - 1 ;
        }
        else var_4 = var_7 + 1 ;
      }
      else {
        if ( var_0 [ var_7 + 1 ] != var_8 && var_0 [ var_7 - 1 ] != var_8 ) {
          return var_8 ;
        }
        else if ( var_0 [ var_7 - 1 ] != var_8 ) {
          var_5 = var_7 - 1 ;
        }
        else var_4 = var_7 + 1 ;
      }
    }
  }
  return - 1 ;
}
