首页 > 其他分享 >Leecode 盛最多的水

Leecode 盛最多的水

时间:2024-03-20 14:48:38浏览次数:16  
标签:p2 p1 int res height Leecode maxArea

Day 6 刷题

我的思路:利用两层循环,暴力搜索所有组合的面积,找出最大值。
import java.util.*;

class Solution {
    public int maxArea(int[] height) {

        // 找height和间距
        int maxArea = 0, iArea;

        for (int p1 = 0; p1< height.length-1; p1++){

            int p2 = p1 + 1;
            iArea = Math.min(height[p1],height[p2]);

            // 当新容器面积更大或是指针超出范围
            while (p2 < height.length){

                
                iArea = (p2-p1)*Math.min(height[p1],height[p2++]);
                maxArea = maxArea>iArea?maxArea:iArea;

            }

        }

        return maxArea;

    }

}

Krahets优雅的做法:找短板,短板内移不会带来面积增大。

class Solution {
    public int maxArea(int[] height) {
        int i = 0, j = height.length - 1, res = 0;
        while(i < j) {
            res = height[i] < height[j] ? 
                Math.max(res, (j - i) * height[i++]): 
                Math.max(res, (j - i) * height[j--]); 
        }
        return res;
    }
}

标签:p2,p1,int,res,height,Leecode,maxArea
From: https://www.cnblogs.com/xytang-mini-juan/p/18085160

相关文章

  • Leecode 移动零
    Day6刷题我的解题思路:利用双指针,一个指针不断向前移动,表征是否交换完成,另一个指针负责当次交换的位置。classSolution{publicvoidmoveZeroes(int[]nums){//当指针p1指向的元素为0时,将其挪到后面OUT:for(intp1=0;p1<nums.......
  • Leecode 二叉树的前序遍历
    Day2刷题我的思路:用数组list存储遍历结果,利用ArrayList的方法实现嵌套!importjava.util.*;classSolution{//defininganarraylistpublicList<Integer>preorderTraversal(TreeNoderoot){List<Integer>Traversal=newArrayList<>();......
  • Leecode 搜索插入位置
    Day2刷题我的思路:利用二分法解决问题,不过由于情况没有好好分类,以及循环判定条件不合适,会出现超出运行时间的bug。classSolution{publicintsearchInsert(int[]nums,inttarget){intlength=nums.length;intStartIdx=0;intFinal......
  • Leecode 最长公共前缀
    Day1刷题此题没有写出来,仅附上力扣官方代码:classSolution{publicStringlongestCommonPrefix(String[]strs){if(strs==null||strs.length==0){return"";}Stringprefix=strs[0];intcount=strs.length;......
  • Leecode 将罗马数字转换为整型
    Day1刷题我的解题思路利用罗马数字与整型的转换规律,利用哈希表来生成键值对。classSolution{publicintromanToInt(Strings){intsum=0;HashMap<Character,Integer>RomanInt=newHashMap<Character,Integer>();RomanInt.put('I......
  • Leecode 求两数之和
    Day1刷题我的解题思路是按照第一个元素往后排,不重复的找相加的组合,判断是否为target值,时间复杂度较高,为\(\mathcal{O}(n^2)\)。classSolution{publicint[]twoSum(int[]nums,inttarget){intflag=1;while(flag==1){for(in......
  • 每日一练:LeeCode-125、验证回文串【字符串+双指针】
    如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个回文串。字母和数字都属于字母数字字符。给你一个字符串s,如果它是回文串,返回true;否则,返回false。示例1:输入:s="Aman,aplan,acana......
  • Leecode Day3
    初始想法也是用双指针,问题在于没有灵活运用与运算(实现求和后结果满足二进制表达形式),未设置加位!(add);多了索引位置i,只需要指针i和j。当前位为空。错误代码如下:学习画图小匠的代码:https://leetcode.cn/problems/add-binary/solutions/2652640/javapython3cwei-yun-suan-s......
  • Leecode知识点
    创建结构体指针:varlist*ListNode=&ListNode(0,head)上面的写法等同于list:=  &ListNode(0,head)要想创建一个链表,首先要创建一个表头num:=new(ListNode)然后将其进行数据赋值以及链接到下一个middle:=num //这里对middle进行修改之......
  • leecode数组
    217.存在重复元素给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。示例1:输入:nums=[1,2,3,1]输出:true示例2:输入:nums=[1,2,3,4]输出:false示例 3:输入:nums=[1,1,1,3,3,4,3,2,4,2]输出:true......