自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 重建二叉树

总结重建二叉树的递归和迭代做法来源剑指Offer 面试题7:重建二叉树

2020-12-01 12:33:23 98

原创 topk II

按算法导论写法,一个注意点:虽然随机化版本的快速排序的(数学)期望运行时间是O(n lgn),但在实际使用时要注意到,random函数本身开销也不小题目以剑指offer 40 最小的k个数为例输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出

2020-11-10 12:48:52 99

原创 topK问题记录

以leetcode973问为例题目描述我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。(这里,平面上两点之间的距离是欧几里德距离。)你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。 示例 1:输入:points = [[1,3],[-2,2]], K = 1输出:[[-2,2]]解释: (1, 3) 和原点之间的距离为 sqrt(10),(-2, 2) 和原点之间的距离为 sqrt(8),由于 sqrt

2020-11-09 19:04:36 133

原创 结构相似的二叉树前中后序遍历

之前总结过基于迭代的前中后序遍历方法,但三种方法对应的代码结构很不同,今天做每日一题的时候看到了有人总结的三种结构相似的二叉树前中后序遍历方法,特此记录。1 前序遍历public List preorder(TreeNode root){ Stack stack = new Stack(); List list = new LinkedList(); while(!stack.isEmpty() || root!=null){ if(root!=null){

2020-09-29 10:48:23 202

原创 二叉树的遍历方法总结

问题描述给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3]1\ 2/3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解法1 递归法class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> ans = new ArrayList<>(); helpe

2020-09-16 17:02:43 79

原创 Leetcode108 将有序数组转换为二叉搜索树

题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5解法解法1 递归法官方解法解法2 利用队列迭代/** * Definition for a

2020-09-14 10:58:00 63

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

题目描述输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。解法解法1 用栈实现的DFS在leetcode的题解栏目里没有找到非递归的DFS算法,百度了一下也只找到了js写的非递归法,为了以后自己复习方便,特此记录/** * Definition

2020-09-10 09:36:00 76

原创 Leetcode62 不同路径

题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?解法 动态规划思路:首先,根据输入建立二维数组memo,依据题意初始化第一行和第一列的元素值为1,用双重循环遍历剩下的格子,剩下的某个格子i的值 = i 左边格子的值 + i 上方格子的值class Solution { public int uniquePaths(i

2020-08-18 23:16:45 55

原创 Leetcode56 合并区间:双指针

题目描述给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。解法一思路:首先将输入二维数组进行排序,然后逐一判断是否和上一个

2020-08-17 14:34:07 125

原创 Leetcode55 跳跃游戏 动态规划和贪心算法

题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。解法11.

2020-08-17 11:27:30 177

原创 Leetcode 53 最大子序和 在线处理/动态规划

Leetcode 53 最大子序和使用 在线处理法/动态规划法, 看到有两个解法都是这个思想,但在细节上有所不同,都是正确的解法,在此做个记录。题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解法1代码class Solution { public int maxSubArray(int[]

2020-08-14 11:57:07 165

原创 练习题:输出字符串中字符的任意组合

题目如题,假设给出字符串“abc”,则要求输出“a”,“b”,“c”这三个字符的任意可能组合结果。思路和代码一开始做最开始想到的是最傻的全循环,耗时耗力,pass;然后开始想用递归的方法做,参考了一下之后,自己写的java代码如下:import java.util.ArrayList;import java.util.List;public class test { sta...

2018-10-12 23:52:40 440

空空如也

空空如也

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

TA关注的人

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