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; }