自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在for循环中运行setTimeout的三种情况

在for循环中运行setTimeout是前端开发很常见的一种模式。最近被考了一道相关的题目觉得很有意思也很容易犯错,于是记录下来当做学习笔记。下面先来看一段代码: for(var i=0;i<10;i++){ setTimeout(console.log(i),0); }看完这段代码思考一下结果输出是什么呢?是不是第一时间想到的是连续的10个10呢?啊哈哈这样就...

2019-07-05 21:41:39 11019 6

原创 【LeetCode 27】移除元素

题目描述:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前...

2020-10-18 16:51:19 179

原创 【LeetCode 860】柠檬水找零

题目描述:在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入:...

2020-10-18 16:51:00 208

原创 【LeetCode 69】二分查找之x的平方根

题目描述:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。题解:class Solution { public int m...

2020-10-18 16:50:46 207

原创 【LeetCode 374】二分查找之猜数字的大小

题目描述:我们正在玩一个猜数字游戏。 游戏规则如下:我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。每次你猜错了,我会告诉你这个数字是大了还是小了。你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):-1 : 我的数字比较小1 : 我的数字比较大0 : 恭喜!你猜对了!(注意这里的“我的数字”指的是要猜的数)示例 ...

2020-10-18 16:50:39 185

原创 【LeetCode 976】三角形的最大周长

题目描述:给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回 0。示例 1:输入:[2,1,2]输出:5示例 2:输入:[1,2,1]输出:0示例 3:输入:[3,2,3,4]输出:10示例 4:输入:[3,6,2,3]输出:8题解:关键在于先把数组排序,这里我用了快速排序算法...

2020-10-18 16:50:32 138

原创 【LeetCode 155】最小栈

题目描述:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0)...

2020-10-18 16:50:24 107

原创 【LeetCode 21】合并两个有序链表

题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4题解:/** * Definition for singly-linked list. * public class ListNode { * ...

2020-10-18 16:50:16 108

原创 【LeetCode】回文数

题目描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。题解:class Solution { public boolean isPalindrome(int...

2020-10-18 16:49:42 166

原创 【LeetCode】最长公共前缀

题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。题解:class Solution { public String longestCom...

2020-10-18 16:49:33 104

原创 【LeetCode】两数之和

题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]题解:c...

2020-10-18 16:48:38 109

原创 【LeetCode 35】二分查找之搜索插入位置

题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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题解...

2020-10-18 16:48:29 259

原创 【数据结构】判断两棵树是否相等的算法

下面用先根遍历的思路描述算法的步骤:若两棵二叉树都为空,则两棵二叉树相等,返回true;若两棵二叉树都非空,则若根结点的值相等,则继续判断它们的左子树是否相等;若左子树相等,则再继续判断它们的右子树是否相等;若右子树也相等,则两棵二叉树相等,返回true。任何其他情况都返回false二叉链式存储结构的结点类描述:package tree;public class BiTre...

2020-10-18 16:48:15 4116 1

原创 【LeetCode 203】移除链表元素

题目描述:删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5题解:/** * Definition for singly-linked list. * public class ListNode { * int val...

2020-10-18 16:48:07 138

原创 【LeetCode 141】环形链表

题目描述:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:...

2020-10-18 16:47:59 101

原创 【数据结构】二叉树的先根、中根、后根遍历的递归实现以及层次遍历的非递归实现

二叉树的遍历方法有先根遍历、中根遍历、后根遍历以及层次遍历。这里列出了二叉树的先根、中根、后根遍历的递归实现以及层次遍历的非递归实现。我这里用到的是二叉链式结构。话不多说,直接上代码二叉链式存储结构的结点类描述:package tree;public class BiTreeNode { public Object data; public BiTreeNode lchild,rchi...

2020-10-18 16:47:51 1300

原创 【LeetCode 234】回文链表

题目描述:请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true题解:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next;...

2020-10-18 16:47:42 145

原创 【数据结构】由先根遍历序列和中根遍历序列建立一棵二叉树的算法

二叉链式存储结构的结点类描述:package tree;public class BiTreeNode { public Object data; public BiTreeNode lchild,rchild; //左右孩子域 //构造一个空节点 public BiTreeNode() { this(null); } //构造一颗左、右孩子域为空的二叉树 publi...

2020-10-18 16:47:33 1796

原创 【LeetCode】贪心算法之分发饼干

题目描述:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为...

2020-10-18 16:47:12 191

原创 【LeetCode】罗马数字转整数

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数...

2020-10-18 16:47:00 129

原创 【LeetCode】整数反转

题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例2:输入: -123输出: -321题解:class Solution { public int reverse(int x) { //存放结果 int rev = 0; while (x != 0) {...

2020-10-18 16:46:51 118

原创 【LeetCode】有效的字母异位词

题目描述:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。题解:class Solution { public boolean isA...

2020-10-18 16:46:42 98

原创 【LeetCode 283】移动零

题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。题解:class Solution { public void moveZeroes(int[] nums) { if(n...

2020-10-18 16:46:25 127

原创 【LeetCode 682】棒球比赛

题目描述:你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。2. “+”(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。3. “D”(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。4. “C”(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的...

2020-10-18 16:46:11 197

原创 【LeetCode 83】删除排序链表中的重复元素

题目描述:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3题解:/** * Definition for singly-linked list. * public class ListNode {...

2020-10-18 16:45:56 107

原创 【LeetCode 237】删除链表中的节点

题目描述:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2...

2020-10-18 16:45:48 198

原创 【LeetCode 206】反转链表

题目描述:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL题解:我这里用的迭代法/** * Definition for singly-linked list. * public class ListNode { * int val; * ...

2020-10-18 16:45:39 111

原创 【LeetCode 876】链表的中间结点

题目描述:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans....

2020-10-18 16:45:29 641

原创 【LeetCode 589】N叉树的前序遍历(递归法)

题目描述:给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个 3叉树 :返回其前序遍历: [1,3,5,6,2,4]。题解:/*// Definition for a Node.class Node { public int val; public List<Node> children; public Node() {} p...

2020-10-18 16:45:16 148

原创 【LeetCode 145】二叉树的后序遍历

题目描述:给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]题解:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left;...

2020-10-18 16:45:06 106

原创 【LeetCode 226】翻转二叉树

题目描述:翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1题解:这道题用到了递归,该题的力扣评论有很快速而优雅的解法(膜拜大佬)渣渣的我想了许久,只能搬运膜拜了 指路原作者评论链接class Sol...

2020-10-18 16:44:31 112

原创 【LeetCode 101】对称二叉树之迭代法

题目描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3官方题解:判断一棵二叉树,检查它是否是镜像对...

2020-10-18 16:44:17 128

原创 【LeetCode 1046】最后一块石头的重量

题目描述:有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,...

2020-10-18 16:44:06 182

原创 【LeetCode 70】爬楼梯之动态规划法

题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1...

2020-10-18 16:43:40 184

原创 单源最短路径Dijkstra算法的实现(java版)

单源最短路径问题的问题提出是,计算带权有向图G =(V, E)中一个点(源点)到其余各顶点的最短路径长度,如下图所示。设源点为顶点1,采用Dijkstra算法求下图中源V0为到其余各顶点的最短路径。直接上代码吧:public class Dijkstra { public static void main(String[] args) { // TODO Auto-generated ...

2020-10-18 16:43:27 908

原创 【数据结构】求二叉树深度的算法

要求二叉树的深度,方法是先求出左子树的深度,再求出右子树的深度,二叉树的深度就是左子树的深度和右子树的深度中的最大值加1. 自然而然想到用后根遍历的思想实现主要步骤如下:若二叉树为空,则返回0值,否则求左子树的深度;求右子树的深度;将左子树、右子树深度的最大值加1并返回其值。 //求二叉树深度的算法 public int getDepth(BiTreeNode T) { if...

2020-10-18 16:42:58 7562

原创 【LeetCode 496】下一个更大的元素

题目描述:给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4...

2020-10-18 16:42:40 127

原创 【LeetCode 944】删列造序

题目描述:给定由 N 个小写字母字符串组成的数组 A,其中每个字符串长度相等。删除 操作的定义是:选出一组要删掉的列,删去 A 中对应列中的所有字符,形式上,第 n 列为 [A[0][n], A[1][n], …, A[A.length-1][n]])。比如,有 A = [“abcdef”, “uvwxyz”],要删掉的列为 {0, 2, 3},删除后 A 为[“bef”, “vyz”]...

2020-10-18 16:42:31 138

原创 【LeetCode 104】二叉树的最大深度

题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。题解:/** * Definition for a binary tree...

2020-10-18 16:42:20 124

原创 【数据结构】二叉树上的查找算法

要实现该查找操作,可在二叉树的先根遍历过程中进行,并且在遍历时将访问根结点的操作视为将根结点的值与x进行比较的操作。其主要步骤描述如下:若二叉树为空,则不存在这个结点,返回空值;否则,将根结点的值与x进行比较,若相等,则返回该结点。若根结点的值与x不相等,则在左子树中进行查找,若找到,则返回找到的结点。若在左子树中没找到x的结点,则继续在右子树中进行查找,并返回查找结果。二叉链式存储结...

2020-10-18 16:42:10 673

空空如也

空空如也

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

TA关注的人

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