自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 收藏
  • 关注

原创 扔掉你的算法书!1小时零基础拿下贪心算法!(17道题+万字儿童级解析+数十张图解)

前几天的文章中我写到了一些关于零基础学习回溯算法的一些步骤和细节,在刷题的过程中发现了很多贪心算法的题很有趣,于是今天他来了,准备了好几道题来供大家共同学习,并附上了十分详细的题解,与附带了注释的优美代码,每个题的题解都可以说是隔壁牛大爷都看得懂了咯,相信聪明的小伙伴们一定可以快速上手拿下这个有趣的算法思想。文章附带进度条!!可视化你的进步~贪心算法零基础到快速变成高手文章目录1.分发饼干2.摆动序列3.最大子序和4.买卖股票的最佳时机II5.跳跃游戏6.跳跃游戏II7.K次取反后最大化的数组和8.加油

2021-06-11 07:53:11 2214 65

原创 一篇文零基础带你搞懂回溯(万字:核心思维+图解+习题+题解思路+代码注释)

认真看完本篇文章你将精通掌握关于回溯的以下几点:回溯的本质是什么?如何轻松的写出回溯的代码?如何一眼看穿题目可以用回溯求解?如何通过startIndex进行去重、剪枝?什么是回溯中去重等级?如何利用扫描方向进行合理剪枝?最好搭配课后练习学习,每道题都有详细的题解,以及本人做题时候一步一步思考的过程,附上了详细的代码注释。既深究于细节、又放眼全局,相信你一定有所收获!!文章有点长可以先收藏哦~

2021-06-06 20:51:12 1357 53

原创 万字拿下leetcode线性数据结构

leetcode 史上最精华刷题路线配套题目+最精简AC代码!我是如何从0基础变高高手!刷题?看完这一篇就够了!万字长文

2021-05-23 11:23:24 1813 18

原创 设计原则硬核干货

一篇文章帮你拿下设计模式的核心:设计原则,万字长文以下所有的原则,都不能脱离应用场景!!很多人都有过编写代码时候无所适从,无法写出十分优雅,高效的代码。也有些人在翻阅设计模式的时候摸不透各种奇奇怪怪的模式到底是为了做什么,为什么这么设计的。 一篇文章带你领略 设计模式的核心:设计原则!

2021-05-22 05:17:51 5587 28

原创 设计模式之美 精华总结 笔记(二)

文章目录设计模式之美 精华 笔记(二)一、面向对象精解1、封装2、抽象3、继承4、多态5、思考:为什么有些语言不允许多继承二、面向对象优于面向过程的地方1、形式上2、复用、扩展、维护角度上3、思考角度4、总结5、思考:Linux的开发三、面向对象的误区(大部分人在犯)1、滥用getter、setter方法2、滥用全局变量和全局方法3、基于贫血模型的开发模式(定义数据和方法分离的类)4、总结四、接口和抽象类1、抽象类有哪些特性2、接口有哪些特性3、接口和抽象类的区别4、它们能解决什么问题5、什么时候使用抽象类

2021-05-14 18:23:00 637 3

原创 设计模式之美 精华总结 笔记(一)

文章目录设计模式之美 笔记(一)一、为什么学习设计模式二、如何评判代码质量的高低三、如何实现高质量代码的编写四、面向对象、设计原则、设计模式、编程规范、重构 五者关系、五、总结设计模式之美 笔记(一)一、为什么学习设计模式1、避免写烂代码2、提高复杂代码的设计和开发能力3、读源码、学框架事半功倍二、如何评判代码质量的高低常见的形容词:灵活性(flexibility)、可扩展性(extensibility)、可维护性(maintainability)、可 读性(readability)、可

2021-05-13 18:23:36 288 6

原创 总结leetcode剑指offer分类学习速成

包含所有经典代码 leetcode、剑指offer的详细分类,有基础题,字符串,动链表,树,贪心,动态规划,设计数据结构,等等众多经典题目,并附上了代码的设计实现,帮你轻松进入大厂,每天都在不间断更新。

2021-05-01 10:02:44 524 3

原创 leetcode刷穿二叉树(六)(完结)

终于在第六天拿下了二叉树这里有leetcode题集分类整理!!!今日目标:leetcode 669. 修剪二叉搜索树leetcode 108. 将有序数组转换为二叉搜索树leetcode 538. 把二叉搜索树转换为累加树修剪二叉搜索树题目难度:中等解题思路:二叉搜索树的区间剪枝,根据题意,我们可以得知,满足如下条件的节点需要被‘剪掉’:root.val < low, root.val > high只保留区间的值,不过这个‘剪掉’并不可以是直接将该不满足条件

2021-06-03 06:57:25 2817 25

原创 leetcode刷穿二叉树(五)

拿下二叉树的第五天这里有leetcode题集分类整理!!!leetcode 501. 二叉搜索树中的众数leetcode 236. 二叉树的最近公共祖先leetcode 35. 二叉搜索树的最近公共祖先leetcode 701. 二叉搜索树中的插入操作leetcode 450. 删除二叉搜索树中的节点1、二叉搜索树中的众数题目难度:简单题目描述:解题思路:根据题意,我们得知,必须要遍历完所有节点才能知道答案,并且属于统计类对问题,因此采取什么遍历方式都可以达到目的,这里我们利

2021-06-02 11:30:53 2270 18

原创 leetcode刷穿二叉树(四)

二叉树我又双叒叕来啦~这里有leetcode题集分类整理!!!leetcode 654. 最大二叉树leetcode 617. 合并二叉树leetcode 700. 二叉搜索树中的搜索leetcode 98. 验证二叉搜索树leetcode 530. 二叉搜索树的最小绝对差1、最大二叉树题目难度:中等题目描述:解题思路:看到这种构造二叉树类型的八成就是递归了,然后分为左孩子群和右孩子群,在通过获得左孩子群的最大节点又分为左孩子群的左孩子群和左孩子群的右孩子群… …特别注

2021-06-01 07:23:31 553 11

原创 leetcode刷穿二叉树(三)

这里有leetcode题集分类整理!!!leetcode 513. 找树左下角的值leetcode 112. 路径总和leetcode 113. 路径总和 IIleetcode 106. 从中序与后序遍历序列构造二叉树leetcode 105. 从前序与中序遍历序列构造二叉树1、找树左下角的值:题目难度:中等题目描述:解题思路一(bfs):找二叉树最左下角的值,我们要明确一点是最左边的值,还是最底层的最左边的值,根据题意,我们得知,最后的结果应该是最底层的最左边的值,根据题意我们

2021-05-31 08:05:26 386 5

原创 leetcode刷穿二叉树(二)

leetcode 222. 完全二叉树的节点个数leetcode 110. 平衡二叉树leetcode 257. 二叉树的所有路径leetcode 100. 相同的树leetcode 404. 左叶子之和1、完全二叉树的节点个数题目难度:中等题目描述:解题思路:采用迭代的方式,每次访问如果不是空节点结果 + 1;class Solution { public int countNodes(TreeNode root) { return root == n.

2021-05-30 15:48:57 342 8

原创 leetcode 231. 2 的幂

这里有leetcode题集分类整理!!!方法一:朴素实现用循环判断是不是2的幂。class Solution { public boolean isPowerOfTwo(int n) { long ans = 1; while (ans < n) { ans <<= 1; } if (ans == n) return true; return false; }

2021-05-30 14:03:42 98 1

原创 leetcode 461. 汉明距离

这里有leetcode题集分类整理!!!题目难度:简单题目描述:方法一:通过位运算,加与运算记述解题思路:要计算两个数字二进制位数不同的地方,只需要先计算出两个数的异或值,即可,然后通过位运算记录每个位置上面不等于一的情况。code:class Solution { public int hammingDistance(int x, int y) { int s = x ^ y; int ans = 0; while (s != 0

2021-05-27 07:05:03 115 5

原创 leetcode刷穿二叉树(一)

带你刷穿leetcode二叉树系列(一),附优质题解+代码,每天五道题,简单到困难,小白到高手。 遇到树的问题再也不难受~

2021-05-25 10:04:50 206 2

原创 最全二叉树的遍历方式总结

本文囊括了二叉树遍历的所有方式,基本所有二叉树的题目中,都要基于本文的实现,进行改造和升级。最全二叉树的遍历方式总结。

2021-05-24 12:09:41 123

原创 面试题 02.01. 移除重复节点

hash(O(n))/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode removeDuplicateNodes(ListNode head) { int[] has.

2021-05-23 22:18:26 86

原创 leetcode 1035. 不相交的线

这里有leetcode题集分类整理!!!题目难度:中等题目描述:解题思路:最经典的动态规划, 在遍历的时候情况分为:两个数相等,直接更新dp[i][j] = dp[i - 1][j - 1] + 1;两个数不相等,更新dp取决下面两种情况的最大值dp[i][j] = dp[i - 1][j];dp[i][j] = dp[i][j - 1];code:class Solution { public int maxUncrossedLines(int[] nu

2021-05-21 09:03:29 154

原创 leetcode 1738. 找出第 K 大的异或坐标值

这里有leetcode题集分类整理!!!题目难度: 中等题目描述:前缀和 + 集合排序class Solution { public int kthLargestValue(int[][] matrix, int k) { int n = matrix.length; int m = matrix[0].length; int[][] prefix = new int[n + 1][m + 1]; List<Intege

2021-05-19 06:49:45 196

原创 追寻最优美的代码 leetcode 1442. 形成两个异或相等数组的三元组数目

这里有leetcode题集分类整理!!!题目难度:中等题目描述官方题解:接下来就是激动人心的不断优化的过程咯!方法一:(我的经典三重病友循环)class Solution { public int countTriplets(int[] arr) { int n = arr.length; int[] s = new int[n + 1]; for (int i = 0; i < n; i ++) { s

2021-05-18 07:04:24 200

原创 追求最优美的代码 leetcode 993. 二叉树的堂兄弟节点

题目难度:简单题目描述:在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。DFS(+纪录式搜索)class Solution { TreeNode parent1 = null; Tree

2021-05-17 09:03:20 122

原创 追寻最优美的代码 leetcode 421. 数组中两个数的最大异或值

这里有leetcode题集分类整理!!!题目难度:中等题目描述:给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。进阶:你可以在 O(n) 的时间解决这个问题吗?n2暴力:class Solution { public int findMaximumXOR(int[] nums) { int ans = 0; for (int i = 0 ; i < nums.l

2021-05-16 06:46:47 236

原创 我用java刷 leetcode 20.有效的括号

这里有leetcode题集分类整理!!!题目难度:简单题目描述: 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。样例 1:输入:s = “()”输出:true样例 2:输入:s = “()[]{}”输出:true样例 3:输入:s = “(]”输出:false样例 4:输入:s = “([)]”输出:false样例 5:输入:s = “{

2021-05-15 10:29:39 93

原创 我用java刷 leetcode 19. 删除链表的倒数第N个结点

删除链表倒数第n个节点!!!空间 O1 双指针

2021-05-15 09:59:02 77

原创 我用java刷 leetcode 141. 环形链表

史上最强环形链表解法,判断链表是否有环,面试经典!!!

2021-05-15 09:20:27 80 2

原创 我用java刷 leetcode 206. 反转链表

最简洁,最完美的单链表反转实现

2021-05-15 09:00:47 85

原创 我用java刷 leetcode 14. 最长公共前缀

这里有leetcode题集分类整理!!!题目难度:简单题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。样例1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”样例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。我的AC:(纵向扫描)class Solution { public String longestCommonPrefix

2021-05-15 07:14:40 119

原创 我用java刷 leetcode 21. 合并两个有序链表

这里有leetcode题集分类整理!!!题目难度:简单题目描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。思路:太简单了,我很帅AC:(0 ms)/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int v

2021-05-15 06:32:38 57

原创 我用java刷 leetcode 13. 罗马数字转整数

这里有leetcode题集分类整理!!!题目难度:简单题目描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。

2021-05-14 06:57:04 134

原创 我用java刷 leetcode 12. 整数转罗马数字

这里有leetcode题集分类整理!!!题目难度: 中等题目描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。

2021-05-14 06:22:56 127 2

原创 我用java刷 leetcode 662. 二叉树最大宽度

这里有leetcode题集分类整理!!!题目难度:中等题目描述:给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。样例 1:输入: 1 / \ 3 2 / \ \ 5 3 9 输出: 4解释: 最大值

2021-05-13 15:42:39 186

原创 我用java刷 leetcode 1269. 停在原地的方案数

这里有leetcode题集分类整理!!!题目难度: 困难题目描述:有一个长度为 arrLen 的数组,开始有一个指针在索引 0 处。每一步操作中,你可以将指针向左或向右移动 1 步,或者停在原地(指针不能被移动到数组范围外)。给你两个整数 steps 和 arrLen ,请你计算并返回:在恰好执行 steps 次操作以后,指针仍然指向索引 0 处的方案数。由于答案可能会很大,请返回方案数 模 10^9 + 7 后的结果。样例 1:输入:steps = 3, arrLen = 2输出:4解

2021-05-13 14:53:04 93

原创 我用java刷 leetcode 11. 盛最多水的容器

这里有leetcode题集分类整理!!!题目难度: 中等题目描述:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器双层循环超时 无法AC:class Solution { public int maxArea(int[] height) { int n =

2021-05-12 14:02:04 86

原创 我用java刷 leetcode 1310. 子数组异或查询

这里有leetcode题集分类整理!!!题目难度: 中等题目描述:有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]。对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值(即 arr[Li] xor arr[Li+1] xor … xor arr[Ri])作为本次查询的结果。并返回一个包含给定查询 queries 所有结果的数组。示例 1:输入:arr = [1,3,4,8], queries = [[0,1],[1,2

2021-05-12 13:23:23 101

原创 我用java刷 leetcode 217. 存在重复元素

这里有leetcode题集分类整理!!!题目难度:简单题目描述:给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。样例1:输入: [1,2,3,1]输出: true样例 2:输入: [1,2,3,4]输出: false样例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: trueHash AC: (17ms)class Solution { public boo

2021-05-11 08:42:09 101

原创 我用java刷 leetcode 面试题 17.16. 按摩师

这里有leetcode题集分类整理!!!题目难度: 简单题目描述:一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动样例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。样例 2:输入: [2,7,9,3,1]输出: 12解释: 选择

2021-05-11 08:23:27 133

原创 我用java刷 leetcode 1734. 解码异或后的排列

这里有leetcode题集分类整理!!!(与 leetcode 1720 联动)题目难度: 中等题目描述:给你一个整数数组 perm ,它是前 n 个正整数的排列,且 n 是个 奇数 。它被加密成另一个长度为 n - 1 的整数数组 encoded ,满足 encoded[i] = perm[i] XOR perm[i + 1] 。比方说,如果 perm = [1,3,2] ,那么 encoded = [2,1] 。给你 encoded 数组,请你返回原始数组 perm 。题目保证答案存在且唯一

2021-05-11 07:58:03 112 2

原创 我用java刷 leetcode 147. 对链表进行插入排序

这里有leetcode题集分类整理!!!题目难度: 中等题目描述:对链表进行插入排序。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -

2021-05-10 11:39:41 130

原创 我用java刷 leetcode 剑指 Offer 25. 合并两个排序的链表

这里有leetcode题集分类整理!!!题目难度:简单题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000总结:1、问题出在一碰到链表细节操作就头晕转向2、链表题弄清楚边界处理 , 其实都很简单我的奇怪AC:/** * Definition for singly

2021-05-10 10:56:09 84

原创 我用java刷 leetcode 617.合并二叉树

这里有leetcode题集分类整理!!!题目难度:简单题目描述:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。总结:合并思路清晰AC:/** * Definition for a binary tree node. * public class TreeNode { * int val

2021-05-10 07:50:47 101 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除