Problem:139.单词拆分 给你一个字符串s和一个字符串列表wordDict作为字典。请你判断是否可以利用字典中出现的单词拼接出s。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例1:输入:s=“leetcode”,wordDict=[“leet”,“code”]输出:true解释:返回true因为“leetcode”可以由“leet”和“code”拼接成。示例2: 输入:s=“applepenapple”,wordDict=[“apple”,“pen”]输出:true解释:返回true因为“applepenapple”可以由“apple”“pen”“...

Problem:813.最大平均值和的分组 文章目录 思路 解题方法 Code 思路 首先由于子数组内是连续的,可以用前缀和先把和求出来,再利用perSum[j]-perSum[i-1]来求子数组的和,进而得到区间分组的平均值。现在最大的问题是分组,怎么分组([0,k])?我们将大问题分解成k个小问题,大问题是如何将给定数组nums分成最多k个非空连续子数组,以使得这些子数组的平均值之和最大。小问题可以定义为:从数组的某个特定起点i开始,将数组的剩余部分(nums[i]到nums[n-1])分成最多j个连续子数组,以使得这些子数组的平均值之和最大,其中j≤k。 解题方法 计...

Problem:21.合并两个有序链表 文章目录 思路 1递归实现 2迭代实现 Code 思路 方法1递归实现方法2迭代实现 1递归实现 分析问题对于本题,合并两个有序链表A和B,mergeTwoLists(A,B),递归只需要关注本层我要干什么?,返回什么?首先我要先直到A,B哪个链表的头最小,让最小的那个节点指向剩余部分合并的有序链表头,然后返回当前的结点头。基本情况 当A为空的时候,直接返回B,因为这意味着B所有的结点都大于A的所有结点。 当B为空的时候,直接返回A,同理。 classSolution{ public: //递归实现 ListNodemer...

Problem:523.连续的子数组和 文章目录 思路 解题方法 复杂度 Code 思路 暴力的方法就是求出前缀和数组,然后枚举每个区间和,找到长度大于2且整除k的子区间,但是会超时. 暴力超时 //枚举左端点 for(inti=0;i<n-1;i){ //枚举子数组的长度 for(intj=i+2;j<=n;j){ //区间[i,i+j]的和 if((S[j]S[i])%k0){ //cout<<S[i+j]S[i]<<endl; returntrue; } } } 解题方法 另一种方法是利用同余性质,同余定理:如果两个整数m、...

Problem:525.连续数组 给定一个二进制数组nums,找到含有相同数量的0和1的最长连续子数组,并返回该子数组的长度。 示例1: 输入:nums=[0,1]输出:2说明:[0,1]是具有相同数量0和1的最长连续子数组。示例2: 输入:nums=[0,1,0]输出:2说明:[0,1](或[1,0])是具有相同数量0和1的最长连续子数组。 文章目录 思路 通过代码 思路 给一个连续的数组,里面的数只有0和1,求所有子数组中0和1数量的相等的子数组,并且返回长度最长的子数组的长度。由于要求子数组中0和1的数量相同,所以满足该子数组一定有这样的等式条件:子数组的和(1的个数)=...

Problem:1553.吃掉N个橘子的最少天数 文章目录 题目 思路 Code 题目 使得n变成0的操作有三种方式: 吃掉一个橘子。 如果剩余橘子数n能被2整除,那么你可以吃掉n/2个橘子。 如果剩余橘子数n能被3整除,那么你可以吃掉2(n/3)个橘子。 思路 如果我们每天吃一个橘子(每次是操作1),那么从n到0要经过n天,所以最坏的情况下就是n。要想保证天数最少,最好每天吃的最多。最暴力的方法就是 classSolution{ public: //记录吃掉n个橘子的最少天数 unordered_map<int,int>memo; intminDays(...

Problem:234.回文链表 文章目录 解题方法 复杂度 Code 解题方法 找到链表的中点:首先,我们可以使用快慢指针技巧来找到链表的中点。慢指针每次移动一步,快指针每次移动两步。当快指针到达链表的末尾时,慢指针就会指向链表的中点。反转后半部分(使用递归反转链表)比较前半部分和后半部分 复杂度 时间复杂度: 时间复杂度,示例: 空间复杂度: 空间复杂度,示例: Code classSolution{ public: //思路:使用快慢指针的方法,找到链表的中间结点 //反转后面的部分,再比较两部分 ListNodefind_midNode(ListN...

Problem:206.反转链表 文章目录 思路 解题方法 复杂度 Code 思路 递归求解 解题方法 递归过程 当链表为空或者只有一个结点的时候,我们不需要任何操作,因为它已经是反转的了。if(!head||!head->next)returnhead; 如果链表是多与一个结点,我们将问题简化为反转从第二个结点开始的子链表。if(!head||!head->next)returnhead; 当递归调用返回时,我们拥有了反转后子链表的头部new_head。但是,当前的head节点仍然指向它原始的下一个节点。为了反转它,我们让head.next.next指向h...

机器人在一个无限大小的XY网格平面上行走,从点 (0,0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令 commands : -2 :向左转 90 度 -1 :向右转 90 度 1<=x<=9 :向前移动 x 个单位长度 在网格上有一些格子被视为障碍物 obstacles 。第 i 个障碍物位于网格点 obstacles[i]=(xi,yi) 。 机器人无法走到障碍物上,它将...

  Vi5FLT7akNuP   2023年11月02日   34   0   0 leetcode算法初始化字符串i++
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~