自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Believing Process 力扣Hot322. 零钱兑换 DFS+记忆搜索

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回-1 。你可以认为每种硬币的数量是无限的示例1:输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1package MidTest;public class 零钱兑换 { public static void main(St...

2022-02-20 17:26:32 234

原创 Believing Process Hot279. 完全平方数

题干:给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。示例1:输入:n = 12输出:3解释:12 = 4 + 4 + 4class Solution { public int numSquares(int n) { int[] dp = new int[n+1]; ...

2022-02-19 15:45:35 318

原创 Believing Process 力扣Hot208.实现Trie(前缀树)

题干:Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。class Trie{ private Trie[] children; //表示该节点是否为字符串的结尾 private boolean isEnd; public Trie(){ children = new Trie[26];..

2022-01-24 17:43:50 156

原创 Believing Process 力扣Hot198.打家劫舍

题干;你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额示例;输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。publ...

2022-01-18 19:25:49 157

原创 Believing Process 力扣Hot148.排序链表

题干:给你链表的头结点head,请将其按 升序 排列并返回 排序后的链表 。示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4] public static ListNode sortList(ListNode head) { if(head==null||head.next==null) return head; ListNode fast = head; ListNode slow = head; ...

2022-01-12 10:32:55 386

原创 Believing Process Hot139. 单词拆分

题干:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。示例:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。public class 单词拆分 { public static.

2022-01-03 18:57:28 175

原创 Believing Process Hot96.不同的二叉搜索树

题干:给你一个整数n,求恰由n个节点组成且节点值从1到n互不相同的二叉搜索树有多少种?返回满足题意的二叉搜索树的种数。public class 不同的二叉搜索树 { public static void main(String[] args) { int n =3; System.out.println(numTrees(n)); } public static int numTrees(int n) { ...

2021-12-29 14:44:15 105

原创 Believing Process Hot78. 子集

题干:给你一个整数数组nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]public class 子集 { public static void main(String[] args) { int[] nums = {1,2,3}; ..

2021-12-27 16:09:53 373

原创 Believing Process Hot.62. 不同路径

题干:一个机器人位于一个 m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?输入:m = 3, n = 3输出:6public static void main(String[] args) { int m=3,n=3; System.out.println(uniquePaths(m,n)); ..

2021-12-22 22:17:37 208

原创 Believing Process 力扣Hot 46.全排列

题干:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] public static void main(String[] args) { int[] nums = {1,2,3}; List<List<Integer>> res .

2021-12-18 10:39:00 135

原创 Believing Process 力扣22. 括号生成

题干:数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]class Solution { public List<String> generateParenthesis(int n) { List<String> res =...

2021-12-11 09:54:10 140

原创 Believing Process 最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。public static String longestPalindrome2(String s) { int len = s.length(); if (len < 2) { return s; } int maxLen = 1; in.

2021-12-01 17:28:42 59

原创 Believing Process 剑指 Offer 56 - I. 数组中数字出现的次数

题干:一个整型数组nums里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]public static int[] singleNumbers(int[] nums) { int temp = yihuobianli(nums); int m=1; int x = 0, y =...

2021-11-15 16:37:13 454

原创 Believing Process 剑指 Offer 49. 丑数

题干:我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。public int nthUglyNumber(int n) { int[] res = new int[n]; int a = 0, b = 0, c = 0; res[0] = 1;.

2021-11-13 15:54:46 265

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

题干:在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例:输入: [ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物class Solution { public int maxValue...

2021-11-12 15:34:51 88

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

题干:输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。public int maxSubArray(int[] nums) { if(nums.length==0) return 0; int[] dp = new int[nums.len...

2021-11-10 20:38:54 100

原创 Believing Process 剑指 Offer 38. 字符串的排列

题干:输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"] List<String> res = new ArrayList<>(); char[] c; public String[] permutation(String s) { c =..

2021-11-08 20:04:07 101

原创 Believing Process 剑指 Offer 36. 二叉搜索树与双向链表

题干:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。class Solution { Node head,pre; public Node treeToDoublyList(Node root) { if(root==null) return root; dfs(root); head.left = pre; pre.right = head.

2021-11-08 16:22:05 107

原创 Believing Process 剑指 Offer 34. 二叉树中和为某一值的路径

题干:给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:[[5,4,11,2],[5,8,4,5]]class Solution { List<List<Integer>> ans = new ArrayLis.

2021-11-06 17:50:45 108

原创 Believing Process 剑指 Offer 26. 树的子结构

题干:输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A:3/ \4 5/ \1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], B...

2021-11-02 15:26:30 112

原创 Believing Process 剑指Offer7.重建二叉树

题干:输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]class Solution { int[] preorder; HashMap<Integer, Integer> map = new Hash.

2021-10-24 17:25:00 2058

原创 Believing Process 371.两整数之和

题目:给你两个整数a和b,不使用运算符+和-,计算并返回两整数之和。示例 1:输入:a = 1, b = 2输出:3示例 2:输入:a = 2, b = 3输出:5public class 两整数之和 { public static void main(String[] args) { int a = 1, b = 2; System.out.println(getSum(a,b)); } pub...

2021-09-27 15:01:37 78

原创 Believing Process 力扣565.数组嵌套

题干:索引从0开始长度为N的数组A,包含0到N - 1的所有整数。找到最大的集合S并返回其大小,其中 S[i] = {A[i], A[A[i]], A[A[A[i]]], ... }且遵守以下的规则。假设选择索引为i的元素A[i]为S的第一个元素,S的下一个元素应该是A[A[i]],之后是A[A[A[i]]]... 以此类推,不断添加直到S出现重复的元素。示例:输入: A = [5,4,0,3,1,6,2]输出: 4解释:A[0] = 5, A[1] = 4, A[2] = 0, ..

2021-09-13 17:24:49 153

原创 Believing Process 力扣766.托普利茨矩阵

题干:给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵 。示例:输入:matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]输出:true解释:在上述矩阵中, 其对角线为:"[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]"。各条对角线上的...

2021-09-13 16:26:33 125

原创 Believing Process 力扣503. 下一个更大元素 II

题干:给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。示例:输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第二个 1 的下一个最大的数需要循环搜索,结果也是 2。public class 下一个更大元素2 {..

2021-08-16 15:59:13 106

原创 Believing Process 739. 每日温度

题干:请根据每日气温列表temperatures,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用0来代替。示例:输入: temperatures = [73,74,75,71,69,72,76,73]输出:[1,1,4,2,1,1,0,0]public class 每日温度 { public static void main(String[] args) { int[] temperatures = {30,...

2021-08-12 16:16:52 98

原创 Believing Process 力扣109. 有序链表转换二叉搜索树

题干:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /-10 5class Solution { publ...

2021-08-10 15:30:28 131

原创 Believing Process 力扣236.二叉树的最近公共祖先

题干:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3 。class Solution { ...

2021-08-09 15:33:04 76

原创 Believing Process 力扣637.二叉树的层平均值

题干:给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例:输入: 3 / \ 9 20 / \ 15 7输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。class Solution { public List<Double> averageOfLevels(TreeNode root) { ...

2021-08-06 15:54:29 84

原创 Believing Process 力扣671.二叉树中第二小的节点

题干:给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为2或0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。更正式地说,root.val = min(root.left.val, root.right.val) 总成立。给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。示例:输入:root = [2,2,5,null,null,5,7]输出:5解释:最小的值是 2 ,第二小的值...

2021-08-05 17:15:21 82

原创 Believing Process 力扣337.打家劫舍3

题干:在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例:输入: [3,2,3,null,3,null,1] 3 / \ 2 3 \ \...

2021-08-05 16:18:53 136

原创 Believing Process 力扣687. 最长同值路径

题干:给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。示例:输入: 5 / \ 4 5 / \ \ 1 1 5输出:2class Solution { private int count = 0; public int ...

2021-08-03 17:21:12 95

原创 Believing Process 力扣101.对称二叉树

题干:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3class Solution { public boolean isSymmetric(TreeNode root) { if(root==null) return true; return isEQ(root.left,root.right); ...

2021-08-02 17:25:05 107

原创 Believing Process 力扣328.奇偶链表

题干:给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULLpublic class 奇偶链表 { public s.

2021-08-02 16:19:43 109

原创 Believing Process 力扣725.分隔链表

题干:给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。返回一个符合上述规则的链表的列表。举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4], null ]示例:输入:root =..

2021-08-02 15:37:35 155

原创 Believing Process 力扣112.路径总和

题干:给你二叉树的根节点root和一个表示目标和的整数targetSum,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和targetSum。叶子节点是指没有子节点的节点。示例:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:trueclass Solution { public boolean hasPathSum(TreeNo...

2021-08-01 17:02:40 121

原创 Believing Process 力扣543.二叉树的直径

题干:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回3, 它的长度是路径 [4,2,1,3] 或者[5,2,1,3]。class Solution { private int max = 0; public int d...

2021-08-01 16:16:41 73

原创 Believing Process 力扣19.删除链表的倒数第N个结点

题干:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]public class 删除链表的倒数第N个节点 { public static void main(String[] args) { int[] nums = {1}; int n = 1; ListNode head = cr...

2021-07-29 16:27:04 113

原创 Believing Process 力扣21.合并两个有序链表

题干:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]public class 合并两个有序链表 { public static void main(String[] args) { int[] l1 = {1,2,4}; int[] l2 = {1,3,4}; ListNode l...

2021-07-28 17:17:06 120

原创 Believing Process 力扣206.反转链表

题干:给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]public class 反转链表 { public static void main(String[] args) { int[] value ={1,2,3,4,5}; ListNode head = new ListNode(); ListNode point = head;...

2021-07-28 16:26:30 124

空空如也

空空如也

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

TA关注的人

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