目录1.题目2.题解C#解法一:暴力C#解法二:双指针(左指针大于右指针,left++)C#解法三:双指针优化(左指针小于等于最小高度,left++)Java解法一:双指针Python3解法一:双指针1.题目给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组[1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝
目录1.题目2.题解C#解法一:及其臃肿的代码C#解法二:DFA(确定有穷自动机)1.题目请你来实现一个myAtoi(strings)函数,使其能将字符串转换成一个32位有符号整数(类似C/C++中的atoi函数)。函数myAtoi(strings)的算法如下:1.读入字符串并丢弃无用的前导空格2.检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。确定最终结果是负数还是正数。如果两者都不存在,则假定结果为正。3.读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。4.将前面步骤读入的这些数字转换为整数(即,“123”->123,“0032”
【LetMeFly】70.爬楼梯:动态规划(递推)力扣题目链接:https://leetcode.cn/problems/climbing-stairs/假设你正在爬楼梯。需要n 阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1.1阶+1阶+1阶2.1阶+2阶3.2阶+1阶 提示:1方法一:动态规划(递推)第iii阶楼梯可以由第i−1i-1i−1阶或i−2i-2i−2阶楼梯而来,因此只需要将相邻两阶的方案数加起来,就能得到
两数相加两数相加1思路一(暴毙版)2思路二(本质出发)谢谢阅读Thanks♪(・ω・)ノ下一篇文章见!!!!!!两数相加我们来看看题目,,,,往往困难的题只需要简单的叙述。好像只用找到两个数,整合成一个链表就可以。应该1思路一(暴毙版)首先我最快想到思路是分别根据两个链表求出对应数然后加一起,得到和再把和拆分储存到链表里为此我们需要手撕一下链表头插。typedefstructListNodeSLTNode;SLTNode*buynode(intn){ //开辟空间SLTNode*node=(SLTNode*)malloc(sizeof(SLTNode));node->next=NULL;nod
一:题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]题目链接:力扣(LeetCode)官网-全球极客挚爱的技术成长平台二:解题思路 这道题我们可以用迭代或递归地反转链表。但是这个题更加适合迭代的方法去做。所以我们应该有的一个思维是三个指针立方向。 首先,我们要设置三个变量(这里的变量不要随便设,我们可以从前到后设置n1,n2,n3)反转链表我们只需要两个就行了,但是我们就找不到3了所以需要第三个变量,例如下面的图片但是仅仅分析到这里还是不够的,我们需要将新的next指向NULL,所以我们需要将n1
目录💡题目描述💡思路💡总结100150.移除后集合的最多元素数💡题目描述给你两个下标从0开始的整数数组nums1和nums2,它们的长度都是偶数n。你必须从nums1中移除n/2个元素,同时从nums2中也移除n/2个元素。移除之后,你将nums1和nums2中剩下的元素插入到集合s中。返回集合s可能的最多包含多少元素。💡思路这道题是求两个数组nums1和nums2各移除长度的一半元素后,剩余元素组成的集合s可能包含的最大元素数量。主要思路是:1. 将nums1和nums2中的元素分别放入两个无序集set1和set2中,统计两个集合的大小n1和 n2,以及公共元素数量common2. 计
摘要:Leetcode的AC指南——字符串/KMP:28.找出字符串中第一个匹配项的下标。题目介绍:给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果needle不是haystack的一部分,则返回-1。文章目录一、题目二、解析(go)1、一个简单的AC方法2、KMP算法:直接使用前缀表作为next数组三、其他语言版本JavaC++Python一、题目题目介绍:给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果nee
221.最大正方形在一个由‘0’和‘1’组成的二维矩阵内,找到只包含‘1’的最大正方形,并返回其面积。示例1:输入:matrix=[[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]输出:4示例2:输入:matrix=[[“0”,“1”],[“1”,“0”]]输出:1示例3:输入:matrix=[[“0”]]输出:0提示:m==matrix.lengthm==matrix.lengthm==matrix.lengthn==matrix[i].lengthn==matri
前言❤️铁汁们大家好,欢迎大家来到出小月的博客里,今天小月呢写了一道题目叫替换空格,但是呢,写完之后调试了半天不知道哪里错了,经过小月的坚持不懈,终于成功,来分享给大家小月的错误,希望大家看完我这篇文章都能够“涨芝士”,感觉小月写的还不错的话,记得👍🏻点赞加关注😘鼓励一下博主哦,不然下次可找不到我啦❗❗作者简介❤️作者的主页:出小月的《程序员历险记》❤️专栏:《C语言》,《数据结构初阶》😊希望大家都能够:好好学习,天天编程❗❗❗文章目录前言作者简介一、题目介绍二、题目链接三、小月的思路四、小月出现的错误错误1错误2五、正确代码总结一、题目介绍🐻请实现一个函数,把字符串s中的每个空格替换成"%2
两数之和两数之和1思路一(简单突破)2思路二(进行优化)3思路三(哈希表我还不会)谢谢阅读Thanks♪(・ω・)ノ下一篇文章见!!!两数之和题目链接1思路一(简单突破)最简单的思想:遍历从头开始逐个遍历。首先选定加数1然后寻找加数2,如果两者之和满足条件target。返回相应下标即可!int*twoSum(int*nums,intn,inttarget,int*returnSize){for(inti=0;in;i++){//加数1从头开始for(intj=i+1;jn;j++){//加数2从加数1后一位开始if(nums[i]+nums[j]==target){//满足条件即可返回对应下标