public int reverse(int x) {
    	    boolean isNeg = false;
    	    if(x<0) {isNeg = true; x = -x;}

    	    long rev = 0;
    	    while(x>0) {
    	      rev = rev*10 + x%10;
    	      x /= 10;      
    	    }
    	    if(rev > Integer.MAX_VALUE) return 0;
    	    if(isNeg) rev = -rev;
    	    return (int) rev;  
    	  }

    	  public boolean isPalindrome(int x) {
    	    long rev = 0;
    	    int chk = x;
    	    while(x>0) {
    	      rev = rev*10 + x%10;
    	      x /= 10;      
    	    }
    	    if(rev > Integer.MAX_VALUE) return false;
    	    if((int)rev == chk ) return true;
    	    return false;
    	    
    	  }  

    	  public int myAtoi(String s) {
    	    if(s == null || s.length() == 0) return 0;
    	    //s = s.replaceAll("^\\s+","");
    	    s = s.trim();
    	    long num = 0;
    	    int i = 0;  // symbol counter
    	    boolean isNeg = s.startsWith("-");
    	    if(isNeg || s.startsWith("+")) 
    	      i++;

    	    while(i < s.length() && s.charAt(i) >= '0' && s.charAt(i) <= '9') {
    	        num = num*10 + (s.charAt(i) - '0');
    	        i++;     
    	    }
    	    if(isNeg) num = -num;
    	    if(num > Integer.MAX_VALUE)
    	      num = Integer.MAX_VALUE;
    	    if(num < Integer.MIN_VALUE)
    	      num = Integer.MIN_VALUE;    

    	    return (int) num;
    	    
    	  }

    	  public int maxArea(int[] height) {
    	    int vol = 0;
    	    int tvol = 0;

    	    for(int i = 0; i < height.length; i++) {   
    	      for(int j = 0; j < height.length; j++) {
    	        tvol = (i - j) * Math.min(height[i], height[j]);
    	        if(tvol < 0) tvol = -tvol;
    	        if(tvol > vol) vol = tvol;
    	        

    	        
    	      }
    	    }

    	    return vol;
    	  }
public int maxArea2(int[] height) {
      // Maximum area will be stored in this variable
      int maximumArea = Integer.MIN_VALUE;
      // Left and right pointers
      int left = 0;
      int right = height.length - 1;
      // Loop until left and right meet
      while (left < right) {
          // Shorter pole/vertical line
          int shorterLine = Math.min(height[left], height[right]);
          // Update maximum area if required
          maximumArea = Math.max(maximumArea, shorterLine * (right - left));
          // If there is a longer vertical line present
          if (height[left] < height[right]) {
              left++;
          } else {
              right--;
          }
      }
      return maximumArea;
  }