![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode详解
文章平均质量分 62
leetcode详解;思路和代码介绍。
比特的一天
至繁归于至简
展开
-
岛屿类-网格类问题-DFS | 力扣463. 岛屿的周长
思路参考:岛屿类-网格类问题-DFS | 力扣200. 岛屿数量本文讲解463. 岛屿的周长问题,属于常见的岛屿类-网格类问题本题使用DFS的思想其实还有暴力递归的思路,属于比较巧妙的一种目录题目 示例思路 一 DFS代码思路 二 递归计算代码题目 示例思路 一 DFS思路参考:岛屿类-网格类问题-DFS | 力扣200. 岛屿数量代码class Solution {public: int islandPerimeter(vector<vector<原创 2021-06-23 01:24:15 · 483 阅读 · 1 评论 -
岛屿类-网格类问题-DFS | 力扣695. 岛屿的最大面积
思路参考上文:岛屿类-网格类问题-DFS | 力扣200. 岛屿数量本文讲解695. 岛屿的最大面积问题,属于常见的岛屿类-网格类问题本题使用DFS的思想题目给定一个包含了一些 0 和 1 的非空二维数组 grid一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 )示例思路分析思路原创 2021-06-18 22:51:09 · 380 阅读 · 0 评论 -
岛屿类-网格类问题-DFS | 力扣200. 岛屿数量
本文讲解200. 岛屿数量问题,属于常见的岛屿类-网格类问题 本题使用DFS的思想原创 2021-06-18 00:25:02 · 320 阅读 · 1 评论 -
双指针算法 | 力扣344. 反转字符串
本文讲解力扣344. 反转字符串问题也就是使用双指针的思想很简单的一道题1 题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。2 示例3 思路分析使用 前后双指针;L 在首位; R 在 尾部L R 指向的字符串交换位置;随后 L 后移,R 前移;继续交换重复上.原创 2021-06-17 22:09:34 · 219 阅读 · 0 评论 -
双指针算法之滑动窗口 | 力扣76.最小覆盖字串
本文将通过解决 力扣76.最小覆盖字串 问题,讲解滑动窗口的原理与实现76.最小覆盖字串题目:给定字符串 S 以及字符串 T ,求 S 种 包含 T 的最短连续子字符串的长度要求 时间复杂度 ≤ O(n)原创 2021-06-16 22:36:33 · 240 阅读 · 0 评论 -
二分大法| 求X的开方,结果一个公式解决! (力扣69.X 的平方根)
本文将讲述:69.X 的平方根(简单)题目:给你一个非负整数,求其开方,向下取整思路:首先,我们把问题数学表示出来,就是:求 f(x) = x^2 - a = 0的解;而且,题目要求的是 非负整数,所以 我们只需要考虑 x >= 0 的情况我们可以注意到:f(0) <= 0 ; f(a) >=0(好家伙,其实这又是一道数学题!)所以,由零点定理我们可以在 区间 [0,a] 上,找到我们想要的解了!在区间上,首先想到的是二分法在区间查找~class Solution原创 2021-06-03 21:40:42 · 585 阅读 · 0 评论 -
双指针算法(四):力扣 88.合并两个有序数组 | 经典例题
题目描述给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例示例一:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]示例二:输入:nums1 = [1]原创 2021-04-29 14:13:06 · 173 阅读 · 0 评论 -
双指针算法(三):力扣【167.两数之和 | 经典例题
本文将讲述双指针算法的一个经典例题,167.两数之和【题目描述】给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。【思路】原创 2021-03-29 12:10:24 · 446 阅读 · 0 评论 -
通俗易懂:贪心算法(三):习题练习 (力扣605种花问题、122买卖股票的最佳时机)
看完本文,可以顺便解决leetcode以下两个题目:605.种花问题????(简单)122.买卖股票的最佳时机Ⅱ????(简单)605.种花问题(简单)题目描述假设有一个很长的花坛????,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?????能则返回 true原创 2021-03-26 12:26:31 · 439 阅读 · 0 评论 -
通俗易懂:贪心算法(二):区间问题 (力扣435无重叠区间)
看完本文,可以顺便解决leetcode以下题目:435.无重叠区间(中等)一、通俗易懂的 贪心算法 |思想 (重复一次~~~)贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的,从而使得结果是全局最优的。比如,A、B、C、都很喜欢吃橘子,A可以吃5个、B可以吃3个、C可以吃1个;但是现在只有7个橘子,问最多几个人可以吃饱;我们选用的贪心策略就是,吃的少的人先吃,尽量先使用量少的人吃饱,所以在这里,B、C肯定是可以吃饱的;在这里,又因为全局结果是局部结果的简单求和,因此,局部最优的策略原创 2021-03-26 12:15:41 · 833 阅读 · 0 评论 -
通俗易懂:贪心算法(一):分配问题 (力扣455分发饼干 和135分发糖果)
看完本文,可以顺便解决leetcode以下两个题目:455.分发饼干(简单)135.分发糖果(困难)一、通俗易懂的 贪心算法 |思想贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的,从而使得结果是全局最优的。比如,A、B、C、都很喜欢吃橘子,A可以吃5个、B可以吃3个、C可以吃1个;但是现在只有7个橘子,问最多几个人可以吃饱;我们选用的贪心策略就是,吃的少的人先吃,尽量先使用量少的人吃饱,所以在这里,B、C肯定是可以吃饱的;在这里,又因为全局结果是局部结果的简单求和,因此,局部最原创 2021-03-14 00:10:16 · 1397 阅读 · 0 评论 -
位运算的那些奇技淫巧 | 掌(装)握(逼)必备,妙解两道算法题
看完本文,可以顺便解决leetcode以下两个题目:191.位1的个数(简单)136.只出现一次的数字(简单)一、常(装)见(逼)的位操作下面我们从简单开始,一步一步的实现复杂的位运算~1、判断奇数偶数看到这个,你肯定觉得很简单,然后随手写下:if (n % 2 == 0){ // 偶数} else { // 奇数}其实使用位运算,可以这样写if ( n & 1 == 1){ // 奇数} else { // 偶数}因为如果一个二进制表示偶数的话偶数的最后一原创 2021-01-17 15:14:52 · 16154 阅读 · 0 评论 -
力扣【阶乘问题】leetcode-172、阶乘后的零;leetcode-793、阶乘后K个零;
题目一:172、阶乘后的零给定一个整数 n,返回 n! 结果中,尾数中零的数量举一个栗子:6!=【 1 * 2 * 3 * 4 * 5 * 6 】6!= 720所以的话就是返回1,因为720 后面只有一个0那么应该怎么做呢?乍一看,感觉问题很复杂,其实只要冷静下来,一步一步简化,结果是十分明了的~第一个想法:首先把阶乘算出来,然后从前到后每一位都遍历吗?这个方法肯定是不可取的,复杂度太高了。我们只需要简单分析一下题目要求看 0 的数量 ,1、末尾的0 是从哪里来的?肯定是乘以 10 得原创 2021-01-13 20:08:18 · 297 阅读 · 0 评论 -
双指针算法之快慢指针(二):力扣【寻找链表的第N个点】leetcode-876、19
双指针算法之快慢指针(二):力扣【寻找链表的第N个点】leetcode-141、142原创 2020-11-29 16:18:06 · 225 阅读 · 0 评论 -
双指针算法之快慢指针(一):力扣【判断链表是否有环】leetcode-141、142
kaui/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: bool hasCycle(ListNode *head) { ListNode *fast,*slow;原创 2020-11-30 17:10:19 · 2594 阅读 · 2 评论 -
力扣【下一个更大元素】leetcode-503.下一个更大元素 Ⅱ:单调栈解法+循环数组解法
题目:思路:解法:代码:class Solution {public: vector<int> nextGreaterElements(vector<int>& nums) { int n = nums.size(); vector<int> res(n); stack<int> s; //单调栈解法 和 739题每日温度相似;多了循环数组的处理 //不去增倍数组,原创 2020-11-08 18:08:55 · 251 阅读 · 0 评论 -
力扣【每日温度】leetcode-739.每日温度:单调栈解法
题目描述:思路:单调栈解法:class Solution {public: vector<int> dailyTemperatures(vector<int>& T) { vector<int> res(T.size());//存放的是索引 stack<int> s; //使用单调栈 for (int i = T.size() - 1; i >= 0; i --)原创 2020-11-27 16:35:08 · 171 阅读 · 0 评论 -
力扣【接雨水问题】 leetcode-42:暴力-备忘录-双指针三种方法
题目描述:思路:不要去思考整体装多少,应该去思考局部的;去想每一个 i 的位置,最多能够装多少雨水;这里的 i 位置最多可以装 2 雨水;和 i 位置 左边最高的柱子,右边最高的柱子有关。大致框架:water[i] = min(max(left) , max(right)) - height[i];解法一:暴力法:时间复杂度 O(N^2),空间复杂度 O(1)。class Solution {public: int trap(vector<int>&a原创 2020-11-04 12:55:12 · 285 阅读 · 0 评论 -
Leetcode 124题:求⼆叉树中最⼤路径和
题目描述:示例:思路分析:主要就是一个后序遍历。运行结果:原创 2020-10-02 00:12:40 · 391 阅读 · 1 评论