自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode498. 对角线遍历

给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。

2022-06-14 23:36:11 178

原创 leetcode44. 通配符匹配

给定一个字符串 (s) 和一个字符模式§ ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。

2022-06-14 23:13:04 178

原创 leetcode135. 分发糖果

n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。...

2022-06-13 22:37:02 183

原创 leetcode179. 最大数

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

2022-06-10 14:54:00 157

原创 leetcode134. 加油站

在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组 gas 和 cost ,如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。...

2022-06-09 15:08:01 63

原创 leetcode257. 二叉树的所有路径

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。

2022-06-08 23:29:02 45

原创 leetcode236. 二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。解1解2

2022-06-08 22:57:31 65

原创 leetcode235. 二叉搜索树的最近公共祖先

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

2022-06-07 16:38:25 57

原创 leetcode1382. 将二叉搜索树变平衡

给你一棵二叉搜索树,请你返回一棵 平衡后 的二叉搜索树,新生成的树应该与原来的树有着相同的节点值。如果有多种构造方法,请你返回任意一种。如果一棵二叉搜索树中,每个节点的两棵子树高度差不超过 1 ,我们就称这棵二叉搜索树是 平衡的 。...

2022-06-07 15:40:12 106

原创 leetcode230. 二叉搜索树中第K小的元素

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。

2022-06-06 13:40:28 65

原创 leetcode222. 完全二叉树的节点个数

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。解1解2...

2022-06-06 11:09:46 57

原创 leetcode200. 岛屿数量

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。...

2022-06-06 10:42:17 52

原创 leetcode124. 二叉树中的最大路径和

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。...

2022-06-04 13:20:50 189

原创 leetcode114. 二叉树展开为链表

给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。

2022-06-01 14:36:46 72

原创 leetcode112. 路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指没有子节点的节点。

2022-06-01 10:22:58 55

原创 leetcode113. 路径总和 II

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。

2022-06-01 10:21:39 61

原创 leetcode111. 二叉树的最小深度

题目描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。题解/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.

2022-05-31 17:26:04 48

原创 leetcode110. 平衡二叉树

题目描述给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。题解/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int va

2022-05-31 14:47:44 56

原创 leetcode104. 二叉树的最大深度

题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。题解/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this

2022-05-31 14:15:40 159

原创 leetcode101. 对称二叉树

题目描述给你一个二叉树的根节点 root , 检查它是否轴对称。题解/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val

2022-05-31 11:08:16 55

原创 leetcode100. 相同的树

题目描述给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的题解/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) {

2022-05-31 10:51:08 44

原创 leetcode90. 子集 II

题目描述给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。题解class Solution { List<List<Integer>> res = new ArrayList<>(); List<Integer> tmp = new ArrayList<>(); public List<List<

2022-05-29 19:45:45 47

原创 leetcode78. 子集

题目描述给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。题解class Solution { List<List<Integer>> res = new ArrayList<>(); List<Integer> tmp = new ArrayList<>(); public List<List<Intege

2022-05-28 17:09:49 37

原创 leetcode77. 组合

题目描述给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。题解class Solution { List<List<Integer>> res = new ArrayList<>(); List<Integer> tmp = new ArrayList<>(); public List<List<Integer>> combine(i

2022-05-28 17:04:37 34

原创 leetcode47. 全排列 II

题目描述给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。题解class Solution { List<List<Integer>> res = new ArrayList<>(); List<Integer> tmp = new ArrayList<>(); public List<List<Integer>> permuteUnique(int[] nums)

2022-05-27 20:43:39 30

原创 leetcode46. 全排列

题目描述给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。题解class Solution { List<List<Integer>> res = new ArrayList<>(); List<Integer> tmp = new ArrayList<>(); public List<List<Integer>> permute(int[] nu

2022-05-27 20:42:43 34

原创 leetcode40. 组合总和 II

题目描述给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次 。注意:解集不能包含重复的组合。题解class Solution { List<List<Integer>> res = new ArrayList<>(); List<Integer> tmp = new Array

2022-05-25 23:21:07 83

原创 leetcode39. 组合总和

题目描述给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。题解class Solution { List<List<

2022-05-25 22:48:09 63

原创 leetcode32. 最长有效括号

题目描述给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。题解class Solution { public int longestValidParentheses(String s) { int length = s.length(); if(length < 2) { return 0; } int max = 0; int[] dp =

2022-05-24 22:53:37 45

原创 剑指 Offer 10- II. 青蛙跳台阶问题

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。题解class Solution { public int numWays(int n) { if(n < 2) { return 1; } int a = 1; int b = 1;

2022-05-23 22:00:49 56

原创 leetcode22. 括号生成

题目描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。题解class Solution { List<String> res = new ArrayList<>(); StringBuilder sb = new StringBuilder(); public List<String> generateParenthesis(int n) { backtracking(n, n)

2022-05-23 21:40:08 38

原创 leetcode10. 正则表达式匹配

题目描述给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。题解class Solution { public boolean isMatch(String s, String p) { boolean[][] dp = new boolean[s.length() + 1][p.length() + 1];

2022-05-23 10:26:34 67

原创 leetcode5. 最长回文子串

题目描述给你一个字符串 s,找到 s 中最长的回文子串。题解class Solution { public String longestPalindrome(String s) { int maxLength = 1; int maxMidIndex = 0; for(int i = 0; i < s.length(); i++) { int lengthOdd = 1; int length

2022-05-20 22:53:48 59

原创 剑指 Offer 42. 连续子数组的最大和

题目描述输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。题解class Solution { public int maxSubArray(int[] nums) { int pre = 0; int max = 0; for(int x : nums) { pre = Math.max(pre + x, x); max = Math

2022-05-19 19:59:36 73

原创 剑指 Offer 46. 把数字翻译成字符串

题目描述给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。分析按位遍历num,如果当前位和前一位不能构成0-25的数,翻译方法不变;如果当前位和前一位能构成0-25的数,翻译方法加遍历到前两位的方法数题解class Solution { public int translateNum(int num) {

2022-05-19 19:48:31 61

原创 剑指 Offer 47. 礼物的最大价值

题目描述在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物题解class Solution { public int maxValue(int[][] grid) { int m = grid.length; int n = grid[0].length;

2022-05-19 19:15:25 60

原创 leetcode714. 买卖股票的最佳时机含手续费

题目描述给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 ;整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。题解class Solution { public int maxProfit(int[] prices, int fee) {

2022-05-18 20:30:53 29

原创 leetcode309. 最佳买卖股票时机含冷冻期

题目描述给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。​设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。题解class Solution { public int maxProfit(int[] prices) { int length = prices

2022-05-18 20:23:40 33

原创 leetcode188. 买卖股票的最佳时机 IV

题目描述给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。题解class Solution { public int maxProfit(int k, int[] prices) { int length = prices.length; if(k == 0 ||

2022-05-18 20:11:06 293

原创 leetcode123. 买卖股票的最佳时机 III

题目描述给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。题解class Solution { public int maxProfit(int[] prices) { int length = prices.length; int[][][] dp = new int[2][3][length];

2022-05-18 19:52:27 305

空空如也

空空如也

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

TA关注的人

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