自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode第十八题:104. 二叉树的最大深度(java实现)

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。解题思路:递归实现代码如下:/** * Definition for a binary tree node. * public class TreeNode { * int v

2020-06-09 16:15:18 148

原创 LeetCode第十七题:100. 相同的树(java实现)

给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1 / \ 2 2

2020-06-08 16:56:37 171

原创 LeetCode第十六题:94. 二叉树的中序遍历(java实现)

给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解题思路:看见树就想到首先考虑递归,题目说递归很简单,进阶用迭代,目前先写个递归,还达不到进阶hhhh。代码如下:/** * Definition for a binary tree node. * public class TreeNode { * int val; *

2020-06-07 21:00:54 168

原创 LeetCode第十五题:2. 两数相加(java实现)

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807解题思路:1,遍历链表,将每两个结点的值相加,并存储到新链

2020-06-06 16:43:16 171

原创 LeetCode第十四题:238. 除自身以外数组的乘积(java实现)

给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 示例:输入: [1,2,3,4]输出: [24,12,8,6] 提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分

2020-06-04 21:40:32 160

原创 LeetCode第十三题:141. 环形链表(java实现)

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

2020-06-03 22:57:39 82

原创 LeetCode第十二题:83. 删除排序链表中的重复元素(java实现)

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3解题思路:比较当前结点的值与下一结点的值,如果相等,删除该结点;如果不相等,将指针指向下一结点。代码如下:/** * Definition for singly-linked list. * public class ListNode { *

2020-06-02 23:09:11 198

原创 LeetCode第十一题:21. 合并两个有序链表(java实现)

将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路:1,设置一个前驱节点prev跟随遍历,设置一个前头结点prehead以便最后返回新链表。2,循环判断l1.val与l2.val的大小,如果l1.val <= l2.val,那么prev.next = l1,l1 = l1.next。3,将prev

2020-06-02 09:33:36 238

原创 LeetCode第十题:1431. 拥有最多糖果的孩子(java实现)

给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。示例 1:输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,true,false,true] 解释:孩子 1 有 2 个糖果,如果他

2020-06-01 19:02:45 375

原创 LeetCode第九题:101. 对称二叉树(java实现)

给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [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 进阶:你可以运用递归和迭代两种方法解决这个问题吗?解题思路:递归遍历二叉树,设置两个指针p,q分别遍历左子树和右子树。代码如下:/** *

2020-05-31 23:08:26 171

原创 LeetCode第八题:27. 移除元素(java实现)

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

2020-05-19 22:56:22 110

原创 LeetCode第七题:9. 回文数(java实现)

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数转为字符串来解决这个问题吗?解题思路:转化为字符串来处理很简单,但是额外空间会用到很多,在此使用不转换.

2020-05-17 13:46:06 190

原创 LeetCode第六题:26. 删除排序数组中的重复项(java实现)

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nums .

2020-05-16 16:13:58 158

原创 LeetCode第五题:1299. 将每个元素替换为右侧最大元素(java实现)

给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。完成所有替换操作后,请你返回这个数组。示例:输入:arr = [17,18,5,4,6,1]输出:[18,6,6,6,1,-1]提示:1 <= arr.length <= 10^41 <= arr[i] <= 10^5解题思路:逆序遍历。1,将原数组最后一个元素赋值给rightMax。rightMax = arr[length - 1]2,然后将-1付给数组最后一.

2020-05-15 14:01:44 146

原创 LeetCode第四题:136. 只出现一次的数字(java实现)

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解题思路:此题本人第一映像想到暴力破解hhhh,经过半分钟的思考过后想起了hashmap这个东东。但是题目要求不适用额外空间来实现,说明了hashmap行不通。最终在题解区找到了异或的方法(真TM巧妙)。代码如下:clas.

2020-05-14 10:51:49 153

原创 LeetCode第三题:237. 删除链表中的节点(java实现)

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

2020-05-13 21:51:15 120

原创 LeetCode第二题:7整数反转(java实现)

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。思路:1,此题可以通过取余运算得到x的最后一位,然后再将x/10,循环。2,重点在于判断反转后的数值是否溢出。代码如下:class So

2020-05-13 21:34:54 190

原创 Leetcode第一题:155最小栈(java实现)

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。此题直接修改了底层的数据结构,用链表来模仿栈实现此题。1,创建一个Node head;在节点中增加一个min区域,用于存放最小元素。结构如:min-value-next。此时min和value相等。2,在添加下一个Node n的时候,此时该Node的min

2020-05-12 22:38:07 170

空空如也

空空如也

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

TA关注的人

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