
算法
文章平均质量分 56
以实战为线索,科普算法的基本知识
码农研究僧
计算机研究生、全栈领域优质创作者、阿里云专家博主、优快云内容合伙人、万码优才推广合伙人、资深技术砖家、专业铲除bug贡献者。❥(^_-)商业合作&考研软考毕设等学习交流❥(^_-)
展开
-
Python求子数组和的所有元素(附Demo)
工作需要,对应需要优化查找子数组和等于特定值的算法对应的算法推荐:子数组相关题目原创 2024-06-17 08:00:00 · 499 阅读 · 0 评论 -
【代码随想录】贪心算法专栏(java版本含注释)
所谓的贪心算法,就是局部最优到全局最优关于该算法的学习路线如下:代码随想录的贪心算法路线原创 2022-05-05 09:21:20 · 1537 阅读 · 0 评论 -
【leetcode】 剑指 Offer学习计划(java版本含注释)(上)
该链接的学习计划如下:剑指 Offer学习计划原创 2022-04-15 14:50:21 · 1262 阅读 · 2 评论 -
【leetcode】shell四道题的专栏含讲解
本栏目主要是科普shell的一些基本使用,但题目比较少,做的不够过瘾(官方只有四道题)专栏地址:leetcode:shell题目但是这四道题的一些基本命令都比较常用,在笔试中的选择题遇到的概率比较高(因为下面的命令真的很有用=-=)推荐你看看原创 2022-04-19 10:26:05 · 650 阅读 · 0 评论 -
字节校园精选 66 道高频经典笔面试题(含多种思路)(上)
以下为我的学习笔记以及汇总,也为了方便其他人更加快速的浏览原创 2022-04-01 02:17:53 · 2541 阅读 · 0 评论 -
【代码随想录】动态规划专栏(java版本含注释)
该算法专栏主要补充一下动态规划的知识点主要跟的up主,链接如下:动态规划理论基础原创 2022-04-30 14:27:14 · 1680 阅读 · 0 评论 -
网易实习面经中的算法题(java版本含注释)
该文章主要是收集牛客上面经被问到的高频算法主要供个人参考以及理解原创 2022-05-08 10:45:21 · 1260 阅读 · 0 评论 -
【代码随想录】栈与队列专栏(java版本)
对于以下的专栏来源于:代码随想录 - 栈与队列关于栈和队列的知识可看我之前的文章【数据结构】栈和队列详细分析(全)以及高级的数据结构java中的PriorityQueue底层和实现原理深入源码探究原创 2022-09-04 16:01:39 · 549 阅读 · 0 评论 -
【技巧模版】数组原地修改的专栏训练(java版本含注释)
一般这种题型多数为数组输出数组出现2个的个数输出数组不是1到n的个数等等题型一般可以使用map集合,但是复杂度偏高是否可使用其他方式进行优化呢进阶:你能在不使用额外空间且时间复杂度为 O(n) 的情况下解决这个问题吗? 你可以假定返回的数组不算在额外空间内。原创 2022-05-09 01:25:20 · 550 阅读 · 0 评论 -
【代码随想录】二叉树和二叉搜索树的专栏(java版本含注释)
关于以下代码的补充可看如下链接:代码随想录中的二叉树理论以及代码本文主要根据该链接的学习路线进行学习,通过阅览其思路以及自我的认知,加上了代码注释方便自我的学习,感兴趣的同学也可收藏关注二叉树专栏这一块 部分代码没有用代码回想录的,主要是代码顺序以及有些思路或者图解引用了原创 2022-04-20 13:10:12 · 1440 阅读 · 0 评论 -
字节校园精选 66 道高频经典笔面试题(含多种思路)(下)
第一版本的链接如下:字节校园精选 66 道高频经典笔面试题(含多种思路)(上)以下为我的学习笔记以及汇总,也为了方便其他人更加快速的浏览原创 2022-09-21 16:49:03 · 2336 阅读 · 0 评论 -
【代码随想录】回溯算法专栏(java版本)
总结回溯算法的题型按照规模将其题型都熟练掌握学习的链接大框架为:回溯算法理论基础LinkedList sonlist=new LinkedList();双向链表可以删除最前或者添加最前的节点,删除的时候通过removeLast();List sonlist=new ArrayList();单链表只能添加,或者删除,删除的时候通过remove(下标值)原创 2022-04-08 01:02:03 · 3358 阅读 · 0 评论 -
【leetcode】4月份每日一题专栏(java版本含注释)
本栏目主要是针对leetcode的每日一题进行按时按量刷本博文的笔记主要是总结自已的逻辑思路也慢慢积累算法,感兴趣的也可关注该栏目大部分思路都是在代码中(含注释)原创 2022-04-11 09:47:02 · 670 阅读 · 1 评论 -
【leetcode】 剑指 Offer学习计划(java版本含注释)(下)
该链接的学习计划如下:剑指 Offer学习计划上一版本的博文链接如下:【leetcode】 剑指 Offer学习计划(java版本含注释)(上)此贴两年前写的,一直在草稿箱里,今天释放出来,后续有时间完善下!(= - =)原创 2024-03-01 14:14:58 · 1012 阅读 · 0 评论 -
【leetcode】剑指Offer专项突击版含注释 Java版本(一)
以下文章主要是方便自我学习总结感兴趣的也可一键三连互相学习大部分算法题都是刷过很多次,知识点也比较重复,特殊情况下会重点讲解下代码思路对应另一套算法题:字节校园精选 66 道高频经典笔面试题(含多种思路)(上)字节校园精选 66 道高频经典笔面试题(含多种思路)(下)原创 2024-02-26 21:49:38 · 1467 阅读 · 0 评论 -
【leetcode】招商银行学习计划经典笔试题(java版本含注释)
leetcode算法原创 2024-01-19 07:00:00 · 2054 阅读 · 0 评论 -
快速幂算法详解(全)
此算法偶尔会出现在笔试以及面试中,特意花时间研究了下这题求AB次方,并且保留最后几位数字(此题保留最后3位数)21000,输出的结果保留3位数字在笔试或者面试中看到此题,第一思路可能通过递归或者while遍历的想法,但细想一下,这么大的数字编程语言中任何一个变量或者计算机硬件机器也hold不住这么大的数字存储(越往后幂次越大,总是会溢出)海量数据处理的高频面试题分析布隆过滤器的原理和实现详细分析(全)。(但可能会有误差)硬件无法存储,那我就分片切片,甚至二进制移位来对应计算(但是我是2。原创 2022-10-14 01:41:09 · 681 阅读 · 0 评论 -
ACM模式下构建二叉树来实现各个核心代码 (java含注释)
acm模式下需要构建二叉树以及定义二叉树的定义性质经常写leetcode或者核心代码的时候,会不知所措以下主要讲解如何在acm模式下 完整书写二叉树代码原创 2022-09-12 11:14:09 · 3087 阅读 · 5 评论 -
字符串中N进制加法、十进制转N进制的模板(java版本含注释)
目录前言字符串的十进制加法字符串的N进制加法前言关于进制数的加法在笔试或者面试都是一个非常常见的题型最主要的是它的从后往前加以及进位的处理此处放出的代码是带输入输出,比较全面万能字符串的十进制加法为了更好的拓展N进制,先从二进制开始从后往前加,要判断有没有数字,以及有没有进位,以及数字的进位怎么处理题目:输入两字符串,输出其十进制的加法延伸拓展:此题来源于:leetcode:415. 字符串相加import java.util.*;public class test {原创 2022-04-22 14:20:50 · 2151 阅读 · 0 评论 -
【leetcode】双指针 - 328. 奇偶链表
目录题目思路一 - 双指针题目给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。你必须在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题。示例 1:输入: head = [1,2,3,4,5]输出: [1,3,5,2,4]示例 2:输入: head = [2,1,3,5原创 2022-03-22 15:29:44 · 732 阅读 · 0 评论 -
【leetcode】中心拓展 - 647. 回文子串(中等)
这里写目录标题题目思路一 - 中心拓展题目给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。回文字符串 是正着读和倒过来读一样的字符串。子字符串 是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:s = “abc”输出:3解释:三个回文子串: “a”, “b”, “c”示例 2:输入:s = “aaa”输出:6解释:6个回文子串: “a”, “a”, “a”, “aa”, “原创 2022-03-17 16:31:25 · 692 阅读 · 1 评论 -
【leetcode】单调栈 - 739. 每日温度(中等)
目录题目思路一 - 暴力遍历思路二 - 单调栈题目给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指在第 i 天之后,才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例 1:输入: temperatures = [73,74,75,71,69,72,76,73]输出: [1,1,4,2,1,1,0,0]示例 2:输入: temperatures = [30,40,50,60]输出: [1,原创 2022-03-17 15:56:47 · 836 阅读 · 0 评论 -
【leetcode】广度优先遍历 - 199. 二叉树的右视图(中等)
题目给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例 1:输入: [1,2,3,null,5,null,4]输出: [1,3,4]示例 2:输入: [1,null,3]输出: [1,3]示例 3:输入: []输出: []提示:二叉树的节点个数的范围是 [0,100]-100 <= Node.val <= 100思路一 - BFS类似层次遍历,只不过每一次都是取每一层的最后一个节点在这里原创 2022-03-17 10:02:34 · 225 阅读 · 0 评论 -
LeetCode 热题 HOT 100 (java算法)实时更新 未完
目录前言----简单难度----1. 两数之和20. 有效的括号21. 合并两个有序链表53. 最大子数组和70. 爬楼梯94. 二叉树的中序遍历101. 对称二叉树104. 二叉树的最大深度121. 买卖股票的最佳时机前言主要是为了方便自个整理思路,以及更好的面试大厂其官网页面为:🔥 LeetCode 热题 HOT 100----简单难度----1. 两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 targ原创 2022-03-15 20:38:57 · 5149 阅读 · 1 评论 -
【leetcode】字符串 - 1047. 删除字符串中的所有相邻重复项(简单)
目录题目思路一 - 栈思路二 - 字符串转换数组题目给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,原创 2022-03-11 01:08:44 · 456 阅读 · 0 评论 -
【leetcode】广度优先搜索 - 102. 二叉树的层序遍历(中等)
目录题目思路一 - 广度优先搜索题目给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例 2:输入:root = [1]输出:[[1]]示例 3:输入:root = []输出:[]提示:树中节点数目在范围 [0, 2000] 内-1000 <= Node.val <= 1000思路原创 2022-03-11 00:29:49 · 277 阅读 · 0 评论 -
【leetcode】递归 - 110. 平衡二叉树(简单)
题目给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例 3:输入:root = []输出:true提示:树中的节点数在范围 [0, 5000] 内-104 <= Node.v原创 2022-03-10 23:44:59 · 202 阅读 · 0 评论 -
【leetcode】数组排序 - 剑指 Offer 61. 扑克牌中的顺子
题目从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例 1:输入: [1,2,3,4,5]输出: True示例 2:输入: [0,0,1,2,5]输出: True限制:数组长度为 5数组的数取值为 [0, 13] .思路一 - 数组加排序先将其排序因为0是可变数字,万能数字主要的核心代码是最后一个数字的值减去(多少个万能0原创 2022-03-10 15:04:02 · 283 阅读 · 0 评论 -
【leetcode】动态规划 - 213. 打家劫舍 II(中等)
题目你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。示例 1:输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他原创 2022-03-10 12:04:44 · 245 阅读 · 0 评论 -
【leetcode】动态规划 - 198.打家劫舍(中等难度)
题目你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:[2,原创 2022-03-10 10:46:00 · 193 阅读 · 0 评论 -
【leetcode】哈希表+双向链表 - LRU的缓存机制
目录题目思路一 - LinkedHashMap思路二 - 哈希表+双向链表题目请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。实现 LRUCache 类:LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 va原创 2022-03-09 17:32:30 · 340 阅读 · 0 评论 -
【leetcode】两次遍历 - 下一个排列(临界条件比较多)
目录题目两次遍历题目整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)原创 2022-03-09 14:11:42 · 184 阅读 · 0 评论 -
【算法】用数组实现循环队列(高频面试题)
目录前言前景知识正文前言关于队列的相关知识可看我之前的文章【数据结构】栈和队列详细分析(全)前景知识科普一些常规的知识点:队列的顺序存储结构:#define MAXQSIZE 100//队列可能达到的最大长度 typedef struct {QElemType *base; //存储空间的基地址int front; //头指针int rear; //尾指针}SqQueue; 初始化创建空队列时,令 front = rear = 0 , 每当插入新的队列尾元素时,尾指针 rear原创 2022-03-05 17:25:16 · 1110 阅读 · 0 评论 -
【leetcode】哈希表 - 有效的数独
这里写目录标题题目思路 - 哈希表题目请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。空白格用 ‘.’ 表示。提示:board.length == 9board[i].leng原创 2022-02-23 15:09:41 · 230 阅读 · 0 评论 -
【leetcode】剑指 Offer 04. 二维数组中的查找
这里写目录标题题目思路一 - 暴力思路二 - 线性排列思路三 - 二叉排序树题目在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21,原创 2022-02-10 15:43:23 · 362 阅读 · 0 评论 -
【leetcode】剑指 Offer 03. 数组中重复的数字
这里写目录标题题目思路一 - 哈希集合思路二 - 原地置换题目找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000思路一 - 哈希集合可以使用哈希的set集合注意项有Set 和HashSet的大小写区分原创 2022-02-10 12:18:20 · 372 阅读 · 0 评论 -
【leetcode】树 - 验证二叉树
目录题目思路 - 递归思路 - 非递归题目给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:root = [2,1,3]输出:true示例 2:输入:root = [5,1,4,null,null,3,6]输出:false解释:根节点的值是 5 ,但是右子节点的值是 4 。提示:树中节原创 2021-12-29 22:08:43 · 952 阅读 · 0 评论 -
【leetcode】图 - 找到小镇的法官
目录题目思路 - 两数组统计思路 - 一个数组统计题目小镇里有 n 个人,按从 1 到 n 的顺序编号。传言称,这些人中有一个暗地里是小镇法官。如果小镇法官真的存在,那么:小镇法官不会信任任何人。每个人(除了小镇法官)都信任这位小镇法官。只有一个人同时满足属性 1 和属性 2 。给你一个数组 trust ,其中 trust[i] = [ai, bi] 表示编号为 ai 的人信任编号为 bi 的人。如果小镇法官存在并且可以确定他的身份,请返回该法官的编号;否则,返回 -1 。示例 1:输原创 2021-12-28 19:07:36 · 744 阅读 · 0 评论 -
【leetcode】数据库 - 分数排名
题目sql架构Create table If Not Exists Scores (id int, score DECIMAL(3,2))Truncate table Scoresinsert into Scores (id, score) values ('1', '3.5')insert into Scores (id, score) values ('2', '3.65')insert into Scores (id, score) values ('3', '4.0')insert i原创 2021-12-21 11:09:27 · 392 阅读 · 0 评论 -
【leetcode】数据库 - 第二高的薪水
目录题目思路 - 子查询和 LIMIT 子句思路 - IFNULL 和 LIMIT 子句题目sql的架构:Create table If Not Exists Employee (id int, salary int)Truncate table Employeeinsert into Employee (id, salary) values ('1', '100')insert into Employee (id, salary) values ('2', '200')insert into原创 2021-12-21 10:56:44 · 1051 阅读 · 0 评论