自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 问答 (3)
  • 收藏
  • 关注

原创 leetcode 101.对称二叉树

文章目录1、题目2、解题思路3、java代码1、题目给定一个二叉树,检查它是否是镜像对称的。进阶:你可以运用递归和迭代两种方法解决这个问题吗?  2、解题思路解树相关问题三件套:DFS,BFS,递归;(1)解决思路一:递归(因为递归的代码写着比较简单);递归三部曲第一步:先判断根节点(这里需要多判断一下,判断一下左右;需要两个参数,所以多写一个方法)第二步:判断左边的左边跟右边的右边是否相等第三步:返回最后判断的结果(2)解决思路二:迭代(利用前序遍历,跟->左

2021-08-10 19:33:21 465 7

原创 leetcode 100.相同的树

文章目录1、题目2、解题思路3、java代码1、题目给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1:输入:p = [1,2,3], q = [1,2,3]输出:true示例 2:输入:p = [1,2], q = [1,null,2]输出:false示例 3:输入:p = [1,2,1], q = [1,1,2]输出:false 提示: 两棵树上

2021-08-10 19:16:37 259

原创 leetcode 226.翻转二叉树

文章目录1、题目2、解题思路3、java代码1、题目翻转一棵二叉树。示例:输入:​ 备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。  2、解题思路解树相关问题三件套:DFS,BFS,递归;(1)解决思路一:递归(因为递归的代码写着比较简单);递归三部曲第一步:先判断根节点,然后交换根节点的左右节点第二步:交换左节点为根节

2021-08-10 19:08:06 296

原创 leetcode 112.路径总和

文章目录1、题目2、解题思路3、java代码1、题目给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。叶子节点 是指没有子节点的节点。 示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true示例 2:输入:root

2021-08-10 19:00:45 257

原创 剑指Offer 55-1.二叉树的深度

文章目录1、题目2、解题思路(1)解决思路一:深度优先搜索(2)解决思路二:广度优先搜索(我喜欢用的方式,一层一层的来,挨个干掉)(3)解决思路三:递归(写起来最简单的)3、java代码1、题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。  2、解题思路看到树的题目,我个人第一印象往深

2021-08-10 18:52:36 139

原创 leetcode 104.二叉树的最大深度

文章目录1、题目2、解题思路(1)解决思路一:深度优先搜索(2)解决思路二:广度优先搜索(我喜欢用的方式,一层一层的来,挨个干掉)(3)解决思路三:递归(写起来最简单的)3、java代码1、题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度&nb

2021-08-10 18:46:16 173

原创 leetcode 148.排序链表

文章目录1、题目2、解题思路3、java代码1、题目给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶: 你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗? 示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4]示例 2:输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]示例 3:输入:head = []输出:[

2021-08-07 11:29:47 156

原创 leetcode 147.对链表进行插入排序

文章目录1、题目2、解题思路3、java代码1、题目对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。&nb

2021-08-07 11:07:46 201

原创 leetcode 23.合并k个升序链表

文章目录1、题目2、解题思路3、java代码1、题目给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5-

2021-08-07 10:58:11 160 2

原创 leetcode 21.合并两个有序链表

文章目录1、题目2、解题思路3、java代码1、题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0] 提示: 两个链表的节点数目范围是 [0, 50] -100 <=

2021-08-07 10:49:21 90

原创 leetcode 19.删除链表的倒数第N个节点

文章目录1、题目2、解题思路3、java代码1、题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗? 示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1] 提示: 链表中结点的数目为 sz 1 <= sz &lt

2021-08-07 10:41:03 156

原创 leetcode 876.链表的中间节点

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

2021-08-06 19:32:47 81

原创 leetcode 206.反转链表

文章目录1、题目2、解题思路3、java代码1、题目给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[] 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= Node.val <= 5000进阶:链表可以选用迭代或递归方

2021-08-06 18:36:15 150

原创 leetcode 203.移除链表元素

文章目录1、题目2、解题思路3、java代码1、题目给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]提示: 列表中的节点数目在范围

2021-08-06 18:23:59 91

原创 leetcode 1095.山脉数组中查找目标

文章目录1、题目2、解题思路3、java代码1、题目(这是一个 交互式问题 )给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值。如果不存在这样的下标 index,就请返回 -1。 何为山脉数组?如果数组 A 是一个山脉数组的话,那它满足如下条件:首先,A.length >=

2021-07-30 19:09:57 249

原创 leetcode 852.山脉数组的峰顶索引

文章目录1、题目2、解题思路3、java代码1、题目符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < i < arr.length - 1)使得: arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] > arr[i+1] > ... > arr[arr.length - 1] 给你由整数组成的山脉数组 arr ,返回任何满

2021-07-30 19:00:48 176

原创 剑指Offer 11.旋转排序数组中的最小

文章目录1、题目2、解题思路3、java代码1、题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。  示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0注意:本题与主站 154 题相同:https://leetcode-cn.com/problem

2021-07-30 18:49:07 88

原创 leetcode 154.寻找旋转排序数组中的最小值Ⅱ

文章目录1、题目2、解题思路3、java代码1、题目已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,4] 若旋转 7 次,则可以得到 [0,1,4,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], .

2021-07-30 18:43:36 153

原创 leetcode 153.寻找旋转排序数组中的最小值

文章目录1、题目2、解题思路3、java代码1、题目已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2] 若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], .

2021-07-30 18:42:44 189

原创 leetcode 81.搜索旋转排序数组Ⅱ

文章目录1、题目2、解题思路3、java代码1、题目已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,4,4,5,6,6,7] 在下标 5 处经旋转后

2021-07-30 18:41:45 92

原创 leetcode 33.搜索旋转排序数组

文章目录1、题目2、解题思路3、java代码1、题目整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,

2021-07-30 18:39:40 152

原创 leetcode 704.二分查找

文章目录1、题目2、解题思路3、java代码1、题目给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,

2021-07-29 12:18:29 102

原创 leetcode 35.搜索插入位置

文章目录1、题目2、解题思路3、java代码1、题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。 示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7

2021-07-28 19:52:34 92

原创 剑指Offer 53-I.在排序数据中查找数字I

文章目录1、题目2、解题思路3、java代码1、题目统计一个数字在排序数组中出现的次数。 示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0提示: 0 <= nums.length <= 105 -109 <= nums[i] <= 109 nums 是一个非递减数组

2021-07-28 19:43:47 103

原创 leetcode 34.排序数组中找第一

文章目录1、题目2、解题思路3、java代码1、题目给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶: 你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗? 示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [

2021-07-28 19:31:08 174

原创 leetcode 179.最大数

文章目录1、题目2、解题思路3、java代码1、题目给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 示例 1:输入:nums = [10,2]输出:“210”示例 2:输入:nums = [3,30,34,5,9]输出:“9534330”示例 3:输入:nums = [1]输出:“1”示例 4:输入:nums = [10]输出:“10” 

2021-07-21 19:44:39 139

原创 leetcode 75.颜色分类

文章目录1、题目2、解题思路3、java代码1、题目给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:输入:nums = [0]输出:[0]示例

2021-07-21 19:38:58 116 2

原创 剑指Offer 45.把数组排成最小的数

文章目录1、题目2、解题思路3、java代码1、题目输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: “102”示例 2:输入: [3,30,34,5,9]输出: “3033459” 提示: 0 < nums.length <= 100说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0

2021-07-21 19:26:37 98 4

原创 剑指Offer 51.数组中的逆序对

文章目录1、题目2、解题思路3、java代码1、题目在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000 2、解题思路(1)解决思路一:暴力破解(双循环,临时变量来存储逆序对的个数),时间复杂度o(n)(2)解决思路二:归并排序;​ (1)复

2021-07-21 19:17:20 76

原创 leetcode 164.最大间距

文章目录1、题目2、解题思路解决方案一:(桶排序)解决方案二:(基数排序)3、java代码:桶排序代码1、题目给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例 1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例 2:输入: [10]输出: 0解释: 数组元素个数小于 2,因此返回 0。说明: 你可以

2021-07-20 15:55:40 165

原创 leetcode 252.会议室

文章目录1、题目2、解题思路3、java代码1、题目 2、解题思路(1)解决方案:<1>先判断是否数组为空,如果为空的话直接返回;<2>对二维数组的元素根据第一个元素做升序排序(自定义比较器)<3>排序后,遍历数组,判断是否有重叠的区间;是的话直接返回false;最后还没有重叠的则返回true;  3、java代码 public boolean canAttendMee

2021-07-14 19:58:54 303

原创 leetcode 56.合并区间

文章目录1、题目2、解题思路3、java代码1、题目以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]示例&nbsp

2021-07-14 19:51:30 124

原创 leetcode 344.反转字符串

文章目录1、题目2、解题思路3、java代码1、题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]

2021-07-13 18:22:54 91

原创 leetcode 283.移动零

文章目录1、题目2、解题思路3、java代码1、题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 2、解题思路(1)解决方案:使用快慢指针;用快的指针遍历完整个数组,慢指针就呆在零的位置,等着赋值快指针;赋值完之后就接着走;遍历完成之后慢指针之后的位置都补0; 3、ja

2021-07-13 18:21:42 72

原创 leetcode 125.验证回文串

文章目录1、题目2、解题思路3、java代码1、题目给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false2、解题思路(1)解决方案:​ 先转化成一个全部小写的数组;然后使用对撞指针;轮流走(每次指针走到下一个是字母或者数字的下标位置;)然

2021-07-13 18:19:39 115

原创 leetcode 27.移除元素

文章目录1、题目2、解题思路3、java代码1、题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以

2021-07-13 12:15:45 86

原创 剑指Offer 09.用两个栈实现队列

文章目录1、题目2、解题思路3、java代码1、题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:

2021-07-06 19:02:33 61

原创 leetcode 155.最小栈

文章目录1、题目2、解题思路3、java代码1、题目设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。示例:输入:[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”][[],[-2],[0],[-

2021-07-05 20:01:23 92

原创 leetcode 20.有效的括号

文章目录1、题目2、解题思路3、java代码1、题目给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例 4:输入:s = "([)]"输出:f

2021-07-05 19:57:50 76

原创 oozie调度sh脚本踩坑合集

oozie调度sh脚本踩坑合集文章目录oozie调度sh脚本踩坑合集一、背景说明1、调度背景2、调度环境版本二、新手村配置(配好了再出门,谢谢;不配会报错的)1、jdbc的配置包2、集群节点都要配置对应的实例(我使用的是sqoop+hive+impala,所有节点都要有实例)3、上传到hdfs的shell脚本要给予可执行权限三、基础技能(学会错不了)1、调度脚本的时候会报错找不到文件,2、看日志四、这真不是yarn的错(谁的错,别问,问就是你的错)五、粘着位stickt bit(一般人遇不到这个问题)六、

2021-04-26 17:33:19 316

空空如也

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

TA关注的人

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