![](https://img-blog.csdnimg.cn/af0a619decd04332b04c6772febfd7b5.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode讲解(看不懂打我系列)
文章平均质量分 82
用最直白的话,来讲明白每个题目。
简十三
假如再也见不到你,祝你早安、午安、晚安。
展开
-
(LeetCode)全排列
1.首先先来理解题目,很简单对吧,其实就是数学上面的排列组合问题,数学上对于这种问题都有一个固定的公式去求解,但是很显然计算机上并没有这样的捷径。其实很好理解,但是首先必须清楚 bool函数 ,这个函数在这里不过多的讲解,仅仅粗略的讲解一下它的用法,这个函数其实是一种判定,它最后的结果仅仅只有 true 和 false 两种,其中 0 为 false,0!这个其实用的就是数学中的计算方法,我们仅仅只需要知道个数的总数即可,不必考虑它的每一种情况。这一部分是整个程序的核心,也是上述思路的一个实体化表现。原创 2022-08-19 20:32:10 · 1785 阅读 · 1 评论 -
(LeetCode) 组合总和——回溯法
给你一个 无重复元素 的整数数组candidates 和一个目标整数target,找出candidates中可以使数字和为目标数target 的 所有不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为target 的不同组合数少于 150 个。...原创 2022-07-25 16:09:40 · 2076 阅读 · 0 评论 -
(LeetCode)在排序数组中查找元素的第一个和最后一个位置——二分法
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题......原创 2022-07-16 12:47:30 · 1320 阅读 · 0 评论 -
(LeetCode)搜索旋转排序数组——二分法
整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0原创 2022-07-15 11:18:19 · 2050 阅读 · 1 评论 -
(LeetCode)最大子数组和——动态规划
目录题目要求题目理解以及思路分析代码讲解总结看完这道题目第一眼是不是觉得这道题目很简单?,但是在多看你一眼就觉得有点难度,当我们下手准备去干他的时候不知不觉就发现我们做了半天的时间了。是不是很真实?下面本篇将对这道题进行讲解。(一) 看见一道题就要先搞懂题目。这个题目的要求就是在给定的数组中任意截取一段使得这一段的和是所有可能的结果中最大的。怎么样,看到这是不是突然觉得这题一点都不简单?很多人开始嘀咕:这得多少种可能啊,而且我怎么保证和就是最大的?(二) 当你有上面的疑问时,说明你的第一思路就是暴力解法,这原创 2022-07-10 12:45:35 · 938 阅读 · 0 评论 -
(LeetCode)电话号码的字母组合
题目要求这个题目乍一看很晦涩,但是理解题目后会发现跟之前一篇讲回溯法的类似,下面我们便开始进行讲解。题目理解以及思路分析(一) 首先先仔细阅读题目,先理解什么是回溯顾名思义,通过一次一次尝试或者结果的办法。按照条件往下执行,以达到目标。当某一步不符,或者达不到目标时,回到前一次,尝试其余的可能。这种路走不通就退回走其他的的方法就称为回溯法。(二) 理解了什么是回溯后,我们接着往下看先要科普下,排列和组合的含义:排列:有序排列的元素的集合。组合:不管排列顺序的集合。通过举例来了解组合排列:排列举例:如原创 2022-07-10 09:58:07 · 173 阅读 · 0 评论 -
(LeetCode)下一个排列
题目要求看完题目可能一头雾水,什么是字典序数?什么又是下一个排列,很多读者连题目都没看懂。不急本篇的讲解现在开始题目理解以及思路分析(一) 先来搞懂题目,搞懂了题目就已经成功了一半了。就拿1 2 3 这个序数来讲解吧其按照从小到大的顺序排列的顺序为:可以发现什么规律? 1.全数升序排列是最小的,全数逆序排列是最大的 2.第一个数字越大其字典序越大 3.后面的数字升序排列比逆序排列小这些是我们通过这个例子能找到的规律,但是对我们解决这道题目有什原创 2022-07-04 14:33:24 · 2000 阅读 · 0 评论 -
(LeetCode)括号合成(回溯法)
题目要求看见这个题是不是突然想起之前讲过的一个 “有效括号” 那一道题,其实二者有一些关系但是又有一些不同。话不多说,本篇正式开始。 题目理解以及思路分析(一) 养成一个习惯,看见一道题首先要搞清楚问题是什么意思,用到了哪些知识。本题一看感觉无从下手很难,其实拆开看会发现这个题其实就是数学知识。大家应该都学过 排列组合,本题便是用的这个思想,有效的括号我们之前讲过,所以我们知道了什么是有效的括号。因此,本题便有了思路。无非就是我们排列出 2n 长的字符串,然后一个一个判断是不是有效的括号,根据排列组合我们应原创 2022-07-03 21:46:54 · 415 阅读 · 0 评论 -
(LeetCode)三数之和——C语言
给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。原创 2022-06-18 17:40:55 · 4185 阅读 · 0 评论 -
(LeetCode)合并两个有序链表——C语言
题目要求又是一个关于链表的题目,通过之前的几篇博客的讲解,大家对链表应该有比较熟悉的理解,因此对于本篇的讲解应该更容易理解。题目理解以及思路分析(一) 这个题目其实难度已经降低了,题目已经给出了 升序 的两个链表,也就是说链表的顺序已经排好了,我们只需要将其按照 升序 的顺序合并即可。(二) 相信看到这,很多读者都有了思路,比如我们先随便将两个链表合并,然后通过一个顺序排列的代码来实现排序,这样的思路是正确的,但是本篇要讲的是另外一种方法。(三) 我们要充分利用两个链表的 升序 的这个性质,我们先不着急把两原创 2022-06-26 17:37:53 · 3232 阅读 · 1 评论 -
(LeetCode)有效的括号【栈】
1.题目要求2.题目理解以及思路分析 3.代码分部讲解(1)第一部分(2)第二部分(3)第三部分4.总结这道题目用 “栈” 的方法和思想会更容易理解同时可以更简单的解决这个问题。(一) 这个题目就是将括号进行配对,因此便有配对成功与失败两种情况。(二) 根据题意可以看出 括号的长度必须为 偶数 ,否则一定是配对失败。(三) 右括号前必须有相对应的左括号,这样才可能配对成功;如果右括号前面没有相对应的左括号则其一定配对不成功。(四) 为了使得配对的思路清晰同时保证不乱,我们采用“栈”的方法,即将其对应的左括号原创 2022-06-26 15:21:20 · 455 阅读 · 0 评论 -
(LeetCode)删除链表的倒数第 N 个结点——C语言
很显然是一个 “链表” 的题目,关于链表,我之前一篇讲“哈希表”的时候曾讲过。其实就是一个数组。这一题的思路很好理解,下面我们就开始讲解吧。这一题最终目的其实就是删除链表的倒数第 n 个结点,并返回链表的头结点。这样讲可能很多人仍然理解不了,说白了我们把链表当作一个一维数组,也就是说,我们找到这个数字倒数第 n 个数,将它删除,然后输出一个新的数组。就是这么简单。题目理解了,那怎么具体的操作呢?,下面我们来一步一步的进行思路分析。这一点很重要,我们只有找了其长度 length 我们才能找到倒数第 n 个数具原创 2022-06-19 18:03:26 · 2125 阅读 · 0 评论 -
最多盛水问题(双指针思想)
目录1. 题目要求2. 题目理解以及方法的思路3. 程序框架4. 代码分部讲解C讲解:C++讲解: 这个题目很多读者乍一看不知道从何处下手,想了很多方法和思路,比如“动态规划”、“for循环”等等。这些方法和思路都可以完成这道题目,但是今天我们来讲解一个最简单的方法——“双指针”。这道题我们分别用 C/C++ 来进行讲解。(一)首先呢,我们先来理解这个题目,看看它到底要我们干什么?其实就是实际生活中的盛水问题,也就是一些老师和家长常说的“木桶定律”——一个木桶能装多少水取决于其最短的那个木板。明白这些后,我原创 2022-06-13 18:26:54 · 733 阅读 · 0 评论 -
(LeetCode) 两数相加-----C语言实现【详细讲解】
题目要求如下: 可以看出这题就是考察的结构体,以及链表的知识。链表跟上一篇哈希表有很大的联系,哈希表里存储的数据其实就是以链表的形式储存的。做题之前我们先来分析一下题目,看看我们究竟要做什么,怎么做?一:给了两个非空的链表,按照逆序的方式存储。OK ,我们先不管他是“逆序”还是“顺序”,对我们来说无所谓。两数相加嘛,很简单的加法计算,因此无论是“逆序”还是“顺序”我们都按照一一对应的位置进行相加就可以了,无所谓顺序如何。二:问题来了?仅仅是两数相加那么简单吗?如果是 9 + 2 呢?我们难道要输出这位的数字原创 2022-06-08 18:01:55 · 3167 阅读 · 7 评论 -
两数之和(LeetCode)——哈希表法(C语言)
上一篇文章留了个引子——用“哈希表”法来解决这个问题。今天,我们来解决一下。为什么用哈希表法?很简单因为它——快!讲解之前我们先来提出几个问题?1)什么是“哈希表”?2)怎么用“哈希表法”来解决这个问题?什么是“哈希表”?(摘自:百度百科)其实 哈希表 就是一种 散列表 ,其英文叫做 “Hash table”,本身就是一种 数据结构 。包含 键值对(key-value),通过一个 key 值来直接访问数据,查找速度快。看完这些仍然一头雾水对吧,下面举个简单的例子,我们应该就会更加理解哈希表。日常生活中都使用原创 2022-06-06 20:26:52 · 2036 阅读 · 0 评论 -
两数之和(LeetCode)
问题描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例一:示例二:示例三: 提示: 2 .........原创 2022-06-05 19:50:10 · 287 阅读 · 0 评论