天道酬勤,学无止境

SQLzoo刷题-窗口函数

一、排名函数

  1. ROW_NUMBER()
  • 将select查询到的数据进行排序,每一条数据加一个序号
SELECT ROW_NUMBER() OVER(ORDER BY 字段)
  1. RANK()
  • 对某一个字段进行排名
  • 与ROW_NUMBER()的区别:
    ①ROW_NUMBER()是排序函数,1,2,3,4,5,6,…
    ②RANK()是排名函数,当某个字段的存在两个值相等时,会并列排名
SELECT RANK() OVER(ORDER BY 字段)
  1. DENSE_RANK()
  • 是密集的排名函数
  • 与RANK()的区别:
    ①DENSE_RANK(),处理相同的值时,排名:1,1,2(而不是1,1,3)
    ②RANK(),处理相同的值时,排名:1,1,3(跳过排名2)
SELECT DENSE_RANK() OVER(ORDER BY 字段)

参考链接:https://blog.csdn.net/shaiguchun9503/article/details/82349050

二、分区函数

  1. Partition By
  • Partition By是分区函数
  • 与GROUP BY的区别:Partition By统计的每一条记录都存在,而GROUP BY将所有的记录汇总成一条记录
RANK() OVER (PARTITION BY 字段1 ORDER BY 字段2 DESC)
/*表示先按字段1分区,然后对每一个区内的字段2进行顺序输出*/
MIN(字段1) OVER (PARTITION BY 字段2 ORDER BY 字段1 ASC)

三、偏移函数

  1. LAG函数
  • 按要求排名后,向上取排名第几的数值
LAG(ColumnName,n,m) OVER (PARTITION BY 字段名 ORDER BY 字段名)
/*选取ColumnName对应上n行的数据,如果没有数据则返回m,如果没有输入m则返回null*/
/*显示前一天的确诊人数*/
SELECT name, DAY(whn), confirmed,/*DAY()用于选取日*/
       LAG(confirmed, 1) OVER (PARTITION BY name ORDER BY whn)
FROM covid
WHERE name = 'Italy'
  AND MONTH(whn) = 3/*MONTH()用于选取月*/
ORDER BY whn

在这里插入图片描述

  1. LEAD函数
  • 按要求排名后,向下取排名第几的数值
LEAD(ColumnName,n,m) OVER (PARTITION BY 字段名 ORDER BY 字段名)

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • SQLZOO:COVID-19
    1.The example uses a WHERE clause to show the cases in ‘Italy’ in March. Modify the query to show data from Spain SELECT name, DAY(whn), confirmed, deaths, recovered FROM covid WHERE name = 'Spain' AND MONTH(whn) = 3 ORDER BY whn 2.The LAG function is used to show data from the preceding row or the table. When lining up rows the data is partitioned by country name and ordered by the data whn. That means that only data from Italy is considered. Modify the query to show confirmed for the day before. SELECT name, DAY(whn), confirmed, LAG(confirmed, 1) OVER (PARTITION BY name ORDER BY whn) FROM
  • SQLzoo刷题答案
    SELECT from Nobel Tutorial Change the query shown so that it displays Nobel prizes for 1950. SELECT yr, subject, winner FROM nobel WHERE yr = 1950 Show who won the 1962 prize for Literature. SELECT winner FROM nobel WHERE yr = 1962 AND subject = 'Literature' Show the year and subject that won ‘Albert Einstein’ his prize. SELECT yr,subject FROM nobel WHERE winner='Albert Einstein' Give the name of the ‘Peace’ winners since the year 2000, including 2000. SELECT winner FROM nobel WHERE subject='Peace' and yr>=2000` Show all details (yr, subject, winner) of the Literature prize winners for 1980 to
  • SQL进阶之路
    SQL进阶之路 1.数据库基础知识1.1 数据库1.2 数据库有哪些分类?1.3 什么是数据库管理系统?1.4 什么是数据库管理工具?1.5 什么是SQL语言?1.6 SQL语言包含哪些内容?1.7 学习SQL和数据库知识的价值1.8 MySQL介绍、下载和安装1.9 客户端如何连接数据库1.10 本章小结 2.数据定义语言DDL(data define language)2.1 对数据库、数据表增删改 3.数据操作语言DML(data maintain language)3.1 向数据表中插入数据(插入行)3.2 更新数据表中的数据3.3 删除数据表中的数据 4.数据查询语言DQL(data query language)4.1基础查询语法4.2 基础函数--时间函数4.3 基础函数--控制函数4.4 基础函数--文本函数和数学函数4.5 子查询4.5 .1 子查询--select4.5 .2 子查询--from4.5 .3 子查询--where 4.6 行合并4.7 多表关联4.7.1 多表关联-内关联:原理和类型4.7.2 多表关联-外连接:原理和类型4.7.2 多表关联应用4.7.3 变量 5.SQL常用窗口函数6.数据控制语言DCL(data control language)7.SQL代码规范7.1基础常识7.2数据库和数据表的命名规则 8.DBeaver使用技巧总结9
  • SQLZOO Window LAG (只有1、2、3、6题)
    链接:https://sqlzoo.net/wiki/Window_LAG 1. SELECT name, DAY(whn), confirmed, deaths, recovered FROM covid WHERE name = 'Spain' AND MONTH(whn) = 3 ORDER BY whn SELECT name, DAY(whn), confirmed, LAG(confirmed, 1, null) OVER( PARTITION BY name ORDER BY whn) dbf FROM covid WHERE name='Italy' AND MONTH(whn)=3 ORDER BY whn SELECT name, DAY(whn), (confirmed - LAG(confirmed, 1) OVER( PARTITION BY name ORDER BY whn)) FROM covid WHERE name='Italy' AND MONTH(whn)=3 ORDER BY whn -- 无,总是报错 'DATE_FORMAT' is not a recognized built-in function name -- 下同 -- DATE_FORMAT 函数报错 SELECT name, confirmed, RANK() OVER(
  • 零基础转码-写给小白的零基础入门机器学习路线
    零基础转码-写给小白的零基础入门机器学习路线 目录 零基础转码-写给小白的零基础入门机器学习路线作者背景我个人的学习路线1. Python2. 机器学习3. 网页开发4. SQL5. Java 一些思考资源打包 作者背景 化学本科,自学python、机器学习和网页开发,做过2个机器学习的项目(一个国内本校,一个国外),无竞赛,无实习,2020Fall中DIY申请到NEU CS-align Seattle,更多关于我的申请可以看这个贴子:从化学到CS-0基础转码申请。本来想好好读书出来挣钱,因为美国疫情严重打算defer一年2021Fall入学,被迫加入找工作的大潮。2020.4-2020.5月间投了很多机器学习,数据分析,软件开发岗位,最终拿了2个软件开发岗,一个软件测试岗。虽然不是BAT级别的大厂,但对于一个菜鸡来说已经很满意了,想知道我找工作情况的朋友可以关注我哦。 学术背景:化学属于理科,所以我本科学过微积分,线性代数,概率统计。自己还选了一门水水的C语言(没啥实质帮助,都是在机房刷题才过的)。省下的其它课程都是在网上自学的。 我个人的学习路线 1. Python Python我是在Coursera上学习的,推荐大家都去Coursera上学习,若是觉得英语的课程+字幕跟不上进度,也可以去中国大学MOOC学习。Coursera简介:Coursera是一个国际性的在线MOOC平台
  • 2021年3月26号,力扣刷题记录---Java-数组
    数组 35. 搜索插入位置 题目地址 题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例 2: 输入: [1,3,5,6], 2 输出: 1 示例 4: 输入: [1,3,5,6], 0 输出: 0 思路 二分法查找元素,并将元素进行插入 代码及注释 class Solution { public int searchInsert(int[] nums, int target) { //二分法进行计算 int len = nums.length; int left = 0; int right = len - 1; //int mid = (left + right) >> 1; // >> 右移运算符,相当于(left + right)/2,但是右移运算符比这种运算符速度要快 int ans = len; while (left <= right){ int mid = (left + right) >> 1; //注释这部分为甚么不能通过,原因待查 // if (nums[mid] <= target){ // ans = mid; // left = mid + 1; // }else { //
  • 程序员代码面试指南&剑指offer 刷题总结
    剑指offer&程序员代码面试指南 1 递归10 斐波那契数列 JZ7跳台阶 JZ8矩形覆盖 JZ1038 字符串的排列 JZ27求N!汉诺塔问题求字符串所有子序列母牛的数量 2 贪心策略变态跳台阶 JZ945 把数组排成最小的数 JZ3214 剪绳子 JZ67分金条的最小花费CD51做项目的最大收益问题CD50 3 动态规划4 图&回溯法12 矩阵中的路径 JZ6513 机器人的运动范围 JZ66 5 数组未排序正数组中,累加和为给定值的最长子数组长度 6 栈和队列JZ59.1队列实现栈225JZ59.2栈实现队列232JZ20 包含min函数的栈 155JZ64 滑动窗口的最大值JZ21 栈的压入、弹出序列 7 矩阵29 顺时针打印矩阵(54. Spiral Matrix)(系列)旋转矩阵 8 树1 二叉树的深度2 二叉树的先序、中序、后序遍历(递归,非递归)3 二叉树的序列化、反序列化4 平衡二叉树5 中序遍历的后继、前级节点 补充题目63 买股票的最佳时机 1 递归 10 斐波那契数列 JZ7 跳台阶 JZ8 矩形覆盖 JZ10 38 字符串的排列 JZ27 求N! 汉诺塔问题 求字符串所有子序列 母牛的数量 2 贪心策略 变态跳台阶 JZ9 45 把数组排成最小的数 JZ32 14 剪绳子 JZ67 分金条的最小花费CD51 做项目的最大收益问题CD50 3 动态规划 4
  • 刷leetcode不知道从哪里刷起?? 来看看,我把刷题题目顺序都排好了,每道题还带详细题解!
    本文 https://github.com/youngyangyang04/leetcode-master 已经收录,里面还有leetcode刷题攻略、各个类型经典题目刷题顺序、思维导图,可以fork到自己仓库,有空看一看一定会有所收获,如果对你有帮助也给一个star支持一下吧! 为什么会有这篇刷题指南 很多刚开始刷题的同学都有一个困惑:面对leetcode上近两千到题目,从何刷起。 其实我之前在知乎上回答过这个问题,回答内容大概是按照如下类型来刷数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心->动态规划->图论->高级数据结构,再从简单刷起,做了几个类型题目之后,再慢慢做中等题目、困难题目。 但我能设身处地的感受到:即使有这样一个整体规划,对于一位初学者甚至算法老手寻找合适自己的题目也是很困难,时间成本很高,而且题目还不一定就是经典题目。 对于刷题,我们都是想用最短的时间把经典题目都做一篇,这样效率才是最高的! 所以我整理了这篇leetcode刷题最强指南:一个超级详细的刷题顺序,每道题目都是我精心筛选,都是经典题目高频面试题,大家只要按照这个顺序刷就可以了,你没看错,就是题目顺序都排好了,文章顺序就是刷题顺序!挨个刷就可以,不用自己再去题海里选题了! 而且每道题目我都写了的详细题解(图文并茂,难点配有视频),力扣上我的题解都是排在对应题目的首页
  • 我可以在SQL中执行max(count(*))吗?(Can I do a max(count(*)) in SQL?)
    问题 这是我的代码: select yr,count(*) from movie join casting on casting.movieid=movie.id join actor on casting.actorid = actor.id where actor.name = 'John Travolta' group by yr; 这是问题: 这是“约翰·特拉沃尔塔”最忙的一年。 显示他每年制作的电影数量。 这是表的结构: movie(id, title, yr, score, votes, director) actor(id, name) casting(movieid, actorid, ord) 这是我得到的输出: yr count(*) 1976 1 1977 1 1978 1 1981 1 1994 1 -- etc. 我需要获取count(*)最大的行。 我该怎么做呢? 回答1 采用: SELECT m.yr, COUNT(*) AS num_movies FROM MOVIE m JOIN CASTING c ON c.movieid = m.id JOIN ACTOR a ON a.id = c.actorid AND a.name = 'John Travolta' GROUP BY m.yr ORDER BY num_movies DESC, m.yr
  • 【刷题1】LeetCode 239. 滑动窗口最大值 java题解
    题目 https://leetcode-cn.com/problems/sliding-window-maximum/ 方法一:单调队列 https://blog.csdn.net/weixin_42970433/article/details/109174079 方法二:动态规划 分析 right[i] 是左侧块内的最大元素, left[j] 是右侧块内的最大元素。因此滑动窗口中的最大元素为 max(right[i], left[j])。 复杂度 时间复杂度:O(N),我们对长度为 N 的数组处理了 3次。 空间复杂度:O(N),用于存储长度为 N 的 left 和 right 数组,以及长度为 N - k + 1的输出数组。 代码 public int[] maxSlidingWindow(int[] nums, int k) { int len = nums.length; int[] maxLeft = new int[len]; int[] maxRight = new int[len]; //从左往右窗口的第一个最大值默认是数组第一个值 maxLeft[0] = nums[0]; //从右往左窗口的最后一个最大值是数组的最后一个值 maxRight[len - 1] = nums[len - 1]; for (int i = 1; i < len; i++) { /
  • 【LeetCode刷题(困难程度)】剑指 Offer 59 - I. 滑动窗口的最大值
    给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 [1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 3 [-1 -3 5] 3 6 7 5 1 3 -1 [-3 5 3] 6 7 5 1 3 -1 -3 [5 3 6] 7 6 1 3 -1 -3 5 [3 6 7] 7 提示: 你可以假设 k 总是有效的,在输入数组不为空的情况下,1 ≤ k ≤ 输入数组的大小。 注意:本题与主站 239 题相同:https://leetcode-cn.com/problems/sliding-window-maximum/ 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路:本题在剑指offer上给出的思路是利用单调双端队列。我们需要维护一个单调双端队列。具体看代码注释,我们需要注意的点是: 什么时候弹出队列头部?(只有当窗口往右移动时候才开始弹出队列头部
  • 力扣刷题
    之前用python刷了一段时间,后来由于种种原因放弃了,现在转java语言了,还是得捡起来,从今天开始重刷!(题目来源:力扣) 文章目录 1. 两数之和2.两数相加3.无重复字符的最长子串21.合并两个有序列表26.删除排序数组中的重复项27.移除元素28.实现strStr()SQLServer数据导入任务: 1. 两数之和 问题: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 代码: class Solution { public int[] twoSum(int[] nums, int target) { HashMap<Integer, Integer> map = new HashMap<>(); for(int i=0;i<nums.length;i++){ if(!(map.containsKey(target-nums[i]))){ map.put(nums[i],i); } else { return new int[]{i,map.get
  • sqlzoo Window LAG答案参考
    1.Introducing the covid table The example uses a WHERE clause to show the cases in ‘Italy’ in March. Modify the query to show data from Spain SELECT name, DAY(whn), confirmed, deaths, recovered FROM covid WHERE name = 'Spain' AND MONTH(whn) = 3 ORDER BY whn 2.Introducing the LAG function The LAG function is used to show data from the preceding row or the table. When lining up rows the data is partitioned by country name and ordered by the data whn. That means that only data from Italy is considered. Modify the query to show confirmed for the day before. SELECT name, DAY(whn), confirmed, LAG
  • 力扣数据库刷题之错题总结和归纳
    阅读之前看这里👉:博主是正在学习数据分析的一员,博客记录的是在学习过程中一些总结,也希望和大家一起进步,在记录之时,未免存在很多疏漏和不全,如有问题,还请私聊博主指正。 博客地址:天阑之蓝的博客,学习过程中不免有困难和迷茫,希望大家都能在这学习的过程中肯定自己,超越自己,最终创造自己。 1.力扣185题 题目:The Department table holds all departments of the company. 获取单一部门的前三高工资的员工部门和姓名以及工资。 The Employee table holds all employees. Every employee has an Id, and there is also a column for the department Id. +----+-------+--------+--------------+ | Id | Name | Salary | DepartmentId | +----+-------+--------+--------------+ | 1 | Joe | 85000 | 1 | | 2 | Henry | 80000 | 2 | | 3 | Sam | 60000 | 2 | | 4 | Max | 90000 | 1 | | 5 | Janet | 69000 | 1 | | 6
  • leetcode刷题总结之滑动窗口
    前言: 这段时间课比较多,还要准备6级,所以题刷的有点慢。我把leetcode关于滑动窗口的免费题差不多都做了,现在总结一下套路,供以后复习用。 滑动窗口思想: ①)窗口由两个指针构成,一个左指针left,一个右指针right,然后[left,right]表示的索引范围是一个窗口了。 ②)右指针right的功能是用来扩展窗口:当窗口内的条件没有达到题目要求时,我们需要不断移动右指针right直到窗口内的条件第一次满足题目要求为止。 ③)左指针left的功能是用来缩小窗口的:当窗口内的条件已满足题目条件或多于题目条件时(窗口溢出),我们缩小窗口,也就是左指针left需要右移直到窗口条件不满足为止。这时,我们需要记录当前窗口的大小,并更新目前为止满足条件的最小窗口记录。之后,再次扩展右指针right,使得窗口满足题目的条件。 注:滑动窗口用来处理连续满足一定条件的连续区间的性质(长度等)问题的,两个指针都起始于原点,并一前一后向终点前进。 习题解析: 3. 无重复字符的最长子串:用set用来当窗口,用来存放遍历到的字符,若没有遇到重复字符,right继续扩展,同时更新max;若遇到重复字符,我们需要缩小窗口,也就是left右移。具体可见:题解。 76. 最小覆盖子串:用两个hashmap(window,needs)来建立字符表,其中needs用来建立存放模式串t的字符表
  • leetcode栈和队列刷题整理
    题解均为java 在写栈和队列的题之前,先介绍一下Deque这个接口 ,该接口需要双向链表数据接口来实现,在它的源码注释中,写明了该双向链表的常用的一些方法。 这里面的所有添加,移除,和获取的方法大家可以看到都是双份的,为什么? 这就涉及到操作失败的问题,一旦操作失败,第一列和第三列的方法会抛出异常,而第二列和第四列的方法会返回特殊值,这就是不同。 offerFirst(e) 在链表头插入元素e offerLast(e) 在链表尾插入元素e pollFirst 移除链表头首元素e,并返回 pollLast 移除链表尾首元素e,并返回 peekFirst 返回链表头首元素e(不移除) peekLast 返回链表尾首元素e(不移除) 使用实现了这个接口的实现类,在逻辑上构建栈和队列。 LInkedList实现了该接口(所以linkedlist是双向链表这下知道了吧) leetcode232. 用栈实现队列 使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 思路: 这种肯定是需要多个栈进行配合的,在这里只需要两个栈,一个入栈和一个出栈 入栈负责入,所以进入队列的元素,push到入栈内 出栈负责出,如果出栈为空,那么把入栈使用pop清空
  • Leetcode刷题 2021.03.24
    Leetcode刷题 2021.03.24 Leetcode1101 彼此熟识的最早时间Leetcode1100 长度为 K 的无重复字符子串Leetcode678 有效的括号字符串 Leetcode1101 彼此熟识的最早时间 在一个社交圈子当中,有 N 个人。每个人都有一个从 0 到 N-1 唯一的 id 编号。 我们有一份日志列表 logs,其中每条记录都包含一个非负整数的时间戳,以及分属两个人的不同 id,logs[i] = [timestamp, id_A, id_B]。 每条日志标识出两个人成为好友的时间,友谊是相互的:如果 A 和 B 是好友,那么 B 和 A 也是好友。 如果 A 是 B 的好友,或者 A 是 B 的好友的好友,那么就可以认为 A 也与 B 熟识。 返回圈子里所有人之间都熟识的最早时间。如果找不到最早时间,就返回 -1 。 再继续等面试结果中。。这题是比较容易想到并查集的,因为好友具有传递性,就能用并查集合并好友。另外为了获得最早的时间,可以先贪心的对时间进行排序,如果好友圈子为1了,就返回该时间就行了。 class Solution { public int earliestAcq(int[][] logs, int N) { //先按照时间从小到大进行排序 Arrays.sort(logs, (x, y) -> (x[0] - y[0]))
  • leetcode刷题常用算法总结
    刷题常用算法总结 一、动态规划1、何时采用动态规划2、动态规划解题步骤2.1 定义状态2.1 状态转移方程 3、例题3.1 01背包问题3.1 无限背包3.3 回文子系列3.4 最长子字符串系列3.5 其他 二、滑动窗口1. 滑动窗口法用于解决的问题2. 解题步骤3. 例题 三、双指针法1. 双指针模式2. 解题步骤3. 例题 四、堆栈法1、堆栈法2、解题步骤3、例题 五、快慢指针法1、快慢指针模式2、解题步骤3、例题 六、哈希表法1、哈希表2、解题步骤 七、区间合并法1、区间合并模式2、解题步骤 八、循环排序1、循环排序法2、解题步骤:3、例题 九、链表反转1、链表反转2、解题步骤3、例题 十、树的BFS1、树的层次遍历2、解题步骤3、例题 十一、树上DFS1、树形DFS2、解题步骤3、例题 十二、子集问题1、解决排列组合的方法2、解题步骤2.1 组合2.2 排列 3、例题 十三、二分查找1、二分查找2、解题步骤3、例题 十四、前K大数1、前k大数2、解题步骤3、例题 十五、K路归并1、K路归并2、解题步骤 十六、二叉树系列例题1例题2 十七、链表十八、进制转换和位运算例题 十九、整数溢出判断例题 二十、贪心算法二十一、数组内的上下左右移动 一、动态规划 动态规划是算法中相对较难的部分,所以放在前面讲。 1、何时采用动态规划
  • 「leetcode」栈与队列:总结篇!
    栈与队列的理论基础 首先我们在栈与队列:来看看栈和队列不为人知的一面中讲解了栈和队列的理论基础。 里面提到了灵魂四问: C++中stack,queue 是容器么?我们使用的stack,queue是属于那个版本的STL?我们使用的STL中stack,queue是如何实现的?stack,queue 提供迭代器来遍历空间么? 相信不仅仅是C++中有这些问题,那么大家使用其他编程语言,也可以考虑一下这四个问题,栈和队列是如何实现的。 栈与队列是我们熟悉的不能再熟悉的数据结构,但它们的底层实现,很多同学都比较模糊,这其实就是基础所在。 可以出一道面试题:栈里面的元素在内存中是连续分布的么? 这个问题有两个陷阱: 陷阱1:栈是容器适配器,底层容器使用不同的容器,导致栈内数据在内存中是不是连续分布。陷阱2:缺省情况下,默认底层容器是deque,那么deque的在内存中的数据分布是什么样的呢?答案是:不连续的,下文也会提到deque。 所以这就是考察候选者基础知识扎不扎实的好问题。 大家还是要多多重视起来! 了解了栈与队列基础之后,那么可以用栈与队列:栈实现队列 和 栈与队列:队列实现栈 来练习一下栈与队列的基本操作。 值得一提的是,用栈与队列:用队列实现栈还有点别扭中,其实只用一个队列就够了。 「一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部
  • 火爆Github!这份LeetCode刷题笔记限时免费!太优秀了!
    前言: 最近又有不少老铁在后台留言说,想进大厂,但是算法不好。最近我整理了一份刷题实录,这份刷题实录,也让我进了心仪的大厂。现在开放分享给大家。希望对大家有所帮助。 任何的算法题,如同写作文一样,都有一些模板可以套用的。比如面试常考的DP(动态规划),难的是一些关键点是否能想清楚。比如你能写出动态转移方程,这题基本上就可以AC了。 整个刷题实录内容,包括 双子针、动态规划、二分查找、贪心算法、深度优先搜索、字符串、递归、字典树、排序、链表等相关专题内容。图文并茂,附有刷题答案源码。 第一部分必读系列: 学习算法和刷题的思路指南学习数据结构和算法读什么书动态规划解题套路框架动态规划答疑篇 动态规划答疑篇回溯算法解题套路框架二分查找解题套路框架滑动窗口解题套路框架 双指针技巧总结BFS算法套路框架Linux的进程、线程、文件描述符是什么Git/SQL/正则表达式的在线练习平台 第二部分动态规划系列: 动态规划设计:最长递增子序列经典动态规划:0-1 背包问题经典动态规划:完全背包问题经典动态规划:子集背包问题 经典动态规划:编辑距离经典动态规划:高楼扔鸡蛋经典动态规划:高楼扔鸡蛋(进阶)经典动态规划:最长公共子序列动态规划之子序列问题解题模板 动态规划之博弈问题动态规划之正则表达动态规划之四键键盘动态规划之KMP字符匹配算法 贪心算法之区间调度问题团灭 LeetCode