力扣刷题总结
文章平均质量分 87
力扣刷题总结
努力更文的小白
从事Java后端,小白一枚,还请各位前辈多多指教
展开
-
滑动窗口刷题技巧总结
代码框架说起滑动窗口算法,很多读者都会头疼。这个算法技巧的思路非常简单,就是维护一个窗口,不断滑动,然后更新答案么。LeetCode 上有起码 10 道运用滑动窗口算法的题目,难度都是中等和困难。该算法的大致逻辑如下:int left = 0, right = 0;while (right < s.size()) { // 增大窗口 window.add(s[right]); right++; while (window needs shrink) {转载 2021-06-05 17:28:56 · 219 阅读 · 0 评论 -
nsum问题
基本介绍经常刷 LeetCode 的读者肯定知道鼎鼎有名的 twoSum 问题。但是除了 twoSum 问题,LeetCode 上面还有 3Sum,4Sum 问题,我估计以后出个 5Sum,6Sum 也不是不可能。那么,对于这种问题有没有什么好办法用套路解决呢?本文就由浅入深,层层推进,用一个函数来解决所有 nSum 类型的问题。一、twoSum 问题力扣上的 twoSum 问题,题目要求返回的是索引,这里我来编一道 twoSum 题目,不要返回索引,返回元素的值:如果假设输入一个数组 nums原创 2021-05-03 01:02:00 · 361 阅读 · 0 评论 -
双指针技巧
基本介绍双指针技巧还可以分为两类,一类是「快慢指针」,一类是「左右指针」。前者解决主要解决链表中的问题,比如典型的判定链表中是否包含环;后者主要解决数组(或者字符串)中的问题,比如二分查找。快慢指针的常见算法快慢指针一般都初始化指向链表的头结点 head,前进时快指针 fast 在前,慢指针 slow 在后,巧妙解决一些链表中的问题。1、判定链表中是否含有环这应该属于链表最基本的操作了,单链表的特点是每个节点只知道下一个节点,所以一个指针的话无法判断链表中是否含有环的。如果链表中不含环,那么这个原创 2021-05-01 14:57:48 · 49 阅读 · 0 评论 -
递归实现链表操作
链表是一种很简单数据结构,但是在面试题中常常出现。链表的每个节点包含一个指向下一个节点的指针,跟串糖葫芦似得穿起来。struct Node { int val; Node* next;}链表结构简单,但是却很漂亮,因为它具有天生的递归结构,所以几乎所有链表的操作都有一个递归的实现方式,这也是本篇文章的主要目的:教大家递归地处理链表。这篇文章主要写两个链表最常考察的两个操作,包括链表翻转和两个有序链表的合并,并且给出迭代和递归两种解法。首先来简单热下身,给一个链表头,求这个链表的长原创 2021-05-13 00:01:24 · 1576 阅读 · 6 评论