leetcode刷题
文章平均质量分 90
lzt928786458
这个作者很懒,什么都没留下…
展开
-
PriorityQueue使用及源码探究
使用PriorityQueue,能够对大顶堆,小顶堆进行模拟,是java中很好用的数据结构,而现在我仅仅是会用的水平,打算看一下源码,深入了解一下底层实现(顺便复习一下堆排序doge)PriorityQueue使用介绍,小顶堆或者是大顶堆Java中PriorityQueue实现了Queue接口,不允许放入null元素;其通过堆实现,具体说是通过完全二叉树(complete binary tree)实现的小顶堆(任意一个非叶子节点的权值,都不大于其左右子节点的权值),也就意味着可以通过数组来作为Prior原创 2021-04-23 15:21:19 · 207 阅读 · 0 评论 -
leetcode回溯刷题整理
回溯就是已经没什么别的办法了,回溯=暴力搜索,它相当于构建了一颗超大的树,然后每个叶子节点都是一种可能性,如果可能性符合条件,就要回溯函数:1.剪枝+如果到达最终状态,处理结果2.元素进入与回退比如说下面那个题,组合,给了一个k,k不确定,那就没法写for循环,只能回溯回溯算法效率:就是拼谁剪枝剪得好,谁边界条件限制的好第77题. 组合给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。思路:回溯达到最终状态:那就是放元素的队列长度为k剪枝:要达到不重复,需要在函数原创 2021-03-05 19:00:23 · 120 阅读 · 0 评论 -
leetcode二叉树整理2
404.左叶子之和思路:找左叶子,怎么判断一个节点是左叶子?当前节点的左孩子如果没有左孩子和右孩子,那么这个节点左孩子就是左叶子因此,只需要遍历二叉树即可,在遍历到中节点的时候,要进行的操作是,判断中节点的左孩子是否为左叶子我在这题中用的是层次遍历class Solution { public int sumOfLeftLeaves(TreeNode root) { Deque<TreeNode> deque = new LinkedList<>();原创 2021-03-05 14:54:56 · 147 阅读 · 1 评论 -
leetcode二叉树整理1
那说到二叉树,肯定先说到的就是前中后序遍历下面这个是一个简单的二叉树节点定义/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int原创 2021-03-04 17:00:27 · 89 阅读 · 0 评论 -
leetcode栈和队列刷题整理
题解均为java在写栈和队列的题之前,先介绍一下Deque这个接口 ,该接口需要双向链表数据接口来实现,在它的源码注释中,写明了该双向链表的常用的一些方法。这里面的所有添加,移除,和获取的方法大家可以看到都是双份的,为什么?这就涉及到操作失败的问题,一旦操作失败,第一列和第三列的方法会抛出异常,而第二列和第四列的方法会返回特殊值,这就是不同。offerFirst(e) 在链表头插入元素eofferLast(e) 在链表尾插入元素epollFirst 移除链表头首元素e,并返回pollLa原创 2021-03-02 19:12:00 · 201 阅读 · 0 评论 -
leetcode字符串刷题整理
使用的语言是java题目344. 反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”] 输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”] 输出:[“h”,“a”原创 2021-02-24 19:39:04 · 114 阅读 · 0 评论 -
leetcode哈希表刷题整理
使用的语言是java第242题. 有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。思路:这个题可以定义一个26长度的数组,首先用来统计s的字母出现个数(出现一个字母,对应位++),然后跟t中出现字母作比较(出现一个字母,对应位–),最后看数组是否位上全为0即可,我是把这两个字符串排序后比较……,其实是用的库函数,偷懒了class Solution { public boolean isAnagram(String s, String t) {原创 2021-02-23 18:44:30 · 135 阅读 · 0 评论 -
leetcode链表刷题整理
题解均为javaleetcode第203题:移除链表元素删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5这个题主要的一个问题是如果头结点的值是给定值的话,怎么处理?因此,要引入一个虚拟的头结点,去保存这个链表的信息,然后再return的时候,把这个虚拟头结点去掉,java有自动垃圾回收,不用像c++一样,我们要去释放掉删除节点的内存,嘻嘻原创 2021-02-22 20:07:50 · 166 阅读 · 0 评论 -
leetcode数组刷题整理
题解均为javaleetcode35:搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0很简单的思路,就是二分法,具体我就不说了,要注意的点只有一个 int m原创 2021-02-22 19:14:53 · 106 阅读 · 0 评论