leetcode解题记录

11. Container With Most Water

Given n non-negative integers a1a2, ..., an , where each represents a point at coordinate (iai). n vertical lines are drawn such that the two endpoints of line i is at (iai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.

Note: You may not slant the container and n is at least 2.

 

The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49.

 

Example:

Input: [1,8,6,2,5,4,8,3,7]
Output: 49

我的解法(解法1):

public class Solution{
    public int maxArea(int[] height){
        int length = height.length;
        int volumn  = 0;
        for (int i=0;i

更好的解法(解法2):

class Solution {
    public int maxArea(int[] height) {
        int max = 0, vol=0;
        int i=0;
        int j = height.length-1;
        while(i!=j){
            vol = Math.min(height[i], height[j]) * (j-i);
            max = (vol > max) ? vol : max;
            if(height[i]>height[j]) j--;
            else i++;
        }
        return max;
    }
}

评论:

单纯的遍历复杂度为O(n^2)

解法2复杂度为O(n),进步的不是一点点。

既然循环次数少了这么多。那么有没有解法1中碰到的情况解法2中没有考虑呢?其实是有的,但是对于2来说,已经将肯定不是最大的情况直接排除了。

 

29. Divide Two Integers

Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator.

Return the quotient after dividing dividend by divisor.

The integer division should truncate toward zero.

Example 1:

Input: dividend = 10, divisor = 3
Output: 3

Example 2:

Input: dividend = 7, divisor = -3
Output: -2

Note:

  • Both dividend and divisor will be 32-bit signed integers.
  • The divisor will never be 0.
  • Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 231 − 1 when the division result overflows.

 

 

你可能感兴趣的:(leetcode解题记录)