首页 > 其他分享 >leetcode刷题随笔(1)

leetcode刷题随笔(1)

时间:2023-04-18 21:26:29浏览次数:38  
标签:容器 int max height 刷题 ans 随笔 leetcode 指针

  11.盛水最多的容器 暴力求解超时问题的解决

int maxArea(vector<int>& height) {
        int max=0;
        int n=height.size();
        int num;
        int i,j;
        for(i=0;i<n;i++)
        for(j=0;j<n;j++)
        {
            if(i<j)
            {
                num=(j-i)*((height[i]>height[j])?height[j]:height[i]);
                if(num>max)
                max=num;
            }
        }
        return max;
    }

解决方案:数组双指针

对O(n)的算法,一开始两个指针一个指向开头一个指向结尾,此时容器的底是最大的,接下来随着指针向内移动,会造成容器的底变小,在这种情况下想要让容器盛水变多,就只有在容器的高上下功夫。 那我们该如何决策哪个指针移动呢?我们能够发现不管是左指针向右移动一位,还是右指针向左移动一位,容器的底都是一样的,都比原来减少了 1。这种情况下我们想要让指针移动后的容器面积增大,就要使移动后的容器的高尽量大,所以我们选择指针所指的高较小的那个指针进行移动,这样我们就保留了容器较高的那条边,放弃了较小的那条边,以获得有更高的边的机会。

 int maxArea(vector<int>& height) {
        int ans=0;
        int i=0,j=height.size()-1;
        ans=max(ans,(j-i)*min(height[i],height[j]));
        while(i<j)
        {
           
            if(height[i]>height[j])
                j--;
            else
                i++;
           ans=max(ans,(j-i)*min(height[i],height[j]));
        }
        return ans;
    }

 

 

标签:容器,int,max,height,刷题,ans,随笔,leetcode,指针
From: https://www.cnblogs.com/lzuu/p/17331143.html

相关文章

  • Redux随笔
    Redux是JavaScript应用的状态容器,提供可预测的状态管理,也就是说Redux不单单只能在React中使用,可以在Vue、Angular等框架中当成状态容器来使用,也可以单独使用,如同JQuery就是一个库,而不是像Vuex这种需要依赖Vue的状态管理容器。参考:https://zhuanlan.zhihu.com/p/20597452在......
  • 【LeetCode剑指offer 03】合并两个/K个排序链表
    合并两个排序链表https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4,1->3->4输出:1->1->2->3->4->4限制:0<=链表长度<=1000思路代码classSolutio......
  • 2023.04.18 定时测试随笔 T1
    T1P3737[HAOI2014]遥感监测传送门:洛谷P3737我们可以根据勾股定理求出每一个点在坐标轴上能覆盖的范围,例如一个点\(P(xi,yi)\),半径长\(r\)那么它在坐标轴上的覆盖范围就是:\([xi-\sqrt{r^2-yi^2},xi+\sqrt{r^2-yi^2}]\); 对每个区间覆盖之后,我们开始思考如何贪心,对右......
  • 【LeetCode动态规划#07】01背包问题一维写法(状态压缩)实战,其二(目标和、零一和)
    目标和(放满背包的方法有几种)力扣题目链接(opensnewwindow)难度:中等给定一个非负整数数组,a1,a2,...,an,和一个目标数,S。现在你有两个符号+和-。对于数组中的任意一个整数,你都可以从+或-中选择一个符号添加在前面。返回可以使最终数组和为目标数S的所有添加符号的......
  • 2023.04.17 定时测试随笔 T2
    T2P2306被yyh虐的mzc传送门:洛谷P2306很显然的一道背包,但是\(n,m<=1e5\),普通的背包会T飞,怎么办呢。。。认真看一下数据规模,\(a[i],b[i]<=10\)那么\(a[i],b[i]\)组合最多\(100\)种不同的家丁,说明会有重复,那么我们把所有重复的记在\(t[a[i]][b[i]]\)中,那这样就......
  • [Leetcode]删除链表中等于val 的所有结点
    力扣链接方法一:使用前后两个指针,cur指向当前位置,prev指向前一个位置,通过改变指向和释放结点来删除val初步代码,还存在问题:/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*remo......
  • 4月17日leetcode二叉树的层序遍历II
    给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)(出自力扣)这个昨天的二叉树的层序遍历有所不同:需要将从后往前层序遍历二叉树,其实很简单,只需要用vector的逆置函数,将vector中的vector逆置即可。这里顺便......
  • LeetCode Top100: 二叉树的最大深度 (python)
     给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/\920/\157返回它的最大深度 3。 以下是Python代码实现:cl......
  • Python3 列表生成式和最近刷题遇到问题
    python3创建二维数组需要用到列表生成式列表生成式即ListComprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。举个例子,要生成list [1,2,3,4,5,6,7,8,9,10]可以用list(range(1,11)):>>>list(range(1,11))[1,2,3,4,5,6,7,8,9,10]......
  • 4月16日leetcode二叉树前序遍历创建字符串,二叉树的层序遍历
    给你二叉树的根节点root,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。空节点使用一对空括号对"()"表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。来源:力扣(LeetCode)链接:https://leetcode.cn/pro......