自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树的遍历

二叉树的遍历二叉树遍历分为先序遍历,中序遍历和后序遍历,遍历顺序如下:先序遍历,遍历顺序为根节点,左子树,右子树。中序遍历,遍历顺序为左子树,根节点,右子树。后序遍历,遍历顺序为左子树,右子树,根节点。二叉树的遍历实现方法分为递归和非递归。递归遍历递归遍历代码比较简洁,按照上述的顺序调用即可。先序遍历private List<Integer> results = new ArrayList<>();public void travesal(TreeNode

2020-07-22 23:11:45 2421

原创 单调栈

介绍单调栈是什么?顾名思义,单调栈中的元素具有单调递增性或单调递减性,即栈中元素按顺序从小到大或者从大到小排列。从小到大单调递增称为单调递增栈,从大到小单调递减称为单调递减栈。把数组的元素依次压入栈中,如果是单调递增栈,压入元素currentData每次和栈顶元素peekData进行比较,如果currentData < peekData, 为了保证栈的单调递增性,栈顶元素须弹出,然后currentData再不断和新的栈顶元素比较,直到currentData > peekData或者栈为空。

2020-06-21 11:19:35 216

原创 [20]. 有效的括号

题目题目链接给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输入: "([)]"输出: false示例5:输入: "{[]}"输出: true解法一解法,这题

2020-06-09 22:32:03 118

原创 [238]、除自身以外数组的乘积

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

2020-06-09 21:59:41 113

原创 [26]、删除排序数组中的重复项

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

2020-06-06 14:15:15 88

原创 [88]、合并两个有序数组

15. [88]、合并两个有序数组题目题目链接给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。你可以假设除了整数 0 之外,这个整数不会以零开头。说明初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例1:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [

2020-06-06 00:01:46 108

原创 66、加一

题目题目链接给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。解法这题比较简单,最后一位+1即可,只需要考虑进位的问题,例如999+1,会多一位变成1000。所以最后一

2020-06-04 21:49:24 129

原创 15. 三数之和

题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]解法一使用暴力求解,初始i=0,j=i+1,k=i+2,然后写三重循环,第三层k从头到尾扫描一遍,每次判断nums[i]+n

2020-06-03 23:10:05 156

原创 [1]、两数之和

题目题目链接给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例1:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解法第一种解法通过暴力,固定i,移动j扫描一遍数组,每次判断是否条件nums[i]+nums[j] == targe

2020-06-03 21:37:24 86

原创 [70]、爬楼梯

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

2020-06-02 22:00:03 111

原创 盛最多水的容器

题目题目链接给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49解法一通过暴力求解,i不动,依次移动j,通过面积公式Math.min(height[i], height[j]) * (j -

2020-06-01 10:21:17 135

原创 [283]、移动零实现

题目leetcode链接给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解法依次遍历,使用双指针i,j,如果遇到为0,i先走,j停下,让i去找到下一个不为0的值,赋值给j所在的位置即num[j] = num[i],i所在的位置为赋值0,即num[i] = 0,当又遇到0时,j又会停下,重新被赋值,以此类推,前面

2020-05-28 23:11:09 81

原创 239.滑动窗口最大值

239.滑动窗口最大值题目链接LeetCode-239题目给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位...

2020-03-15 23:13:40 83

原创 78.子集

子集Subsets题目给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]题解1results集合先添加一个空子数组,遍历nums。nums每遍历一个值,在results所有...

2020-03-14 23:36:29 94

原创 622.设计循环队列

设计循环队列题目链接:622、DesignCircularQueue题目设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列...

2020-03-10 23:30:00 100

空空如也

空空如也

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

TA关注的人

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