- 博客(61)
- 收藏
- 关注
原创 力扣 1.23剑指offer 第15天
剑指 Offer 34. 二叉树中和为某一值的路径给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:[[5,4,11,2],[5,8,4,5]]示例 2:输入:root = [1,2,3], targetSum = 5输出:[]示例 3:
2022-01-23 20:39:55
257
原创 力扣 1.22 剑指offer 第 14 天
剑指 Offer 12. 矩阵中的路径给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 “ABCCED”(单词中的字母已标出)。示例 1:输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,
2022-01-22 19:58:16
270
原创 力扣 1.21 剑指offer 第11、12、13 天
剑指 Offer 18. 删除链表的节点给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的
2022-01-21 20:48:41
149
原创 力扣 1.20 剑指offer 第十天
剑指 Offer 46. 把数字翻译成字符串给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”提示:0 <= num < 231通过次数141,421
2022-01-20 16:45:58
108
原创 力扣 1.14 剑指offer 第九天
剑指 Offer 42. 连续子数组的最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。提示:1 <= arr.length <= 10^5-100 <= arr[i] <= 100class Solution { public int max
2022-01-14 22:57:00
120
原创 力扣 1.13 剑指offer 第八天
一: 剑指 Offer 10- I. 斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:
2022-01-13 19:50:33
117
原创 力扣 1.12 剑指offer 第七天
剑指 Offer 26. 树的子结构输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3/ \4 5/ 1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。class Solution { public boolean isSubStructure(TreeNode A, TreeNode B) {
2022-01-12 23:12:56
181
原创 力扣 1.11 剑指offer 第六天
剑指 Offer 32 - I. 从上到下打印二叉树从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回:[3,9,20,15,7]/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tre
2022-01-11 17:50:16
125
原创 力扣 1.10 剑指offer 第五天
剑指 Offer 04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 tar
2022-01-10 22:03:46
177
原创 力扣 1.9 剑指offer 第四天
剑指 Offer 03. 数组中重复的数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000class Solution { public int findRepeatNumber(int[] nums)
2022-01-09 23:38:50
115
原创 力扣 1.7 剑指offer第三天
一: 剑指 Offer 05. 替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”class Solution { public String replaceSpace(String s) { StringBuffer sb=new StringBuffer(); for(int i=0;i<s.length();i++){
2022-01-07 11:51:44
349
原创 力扣 1.6 剑指offer 第二天
剑指 Offer 06. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]class Solution { public int[] reversePrint(ListNode head) { ArrayList<Integer> result=new ArrayList<Integer>(); while(head!=null){
2022-01-06 16:33:21
125
原创 太阳之子的力扣之路 11.11
一:k个逆序对的数组方案个数好吧,今天的这个题有点难,看了题解才知道怎么做。总的分为三步:①逆序对个数的动态规划②k个逆序对数组方案个数的动态规划③优化复杂度首先,对于①,我们假设 f[i][j] 是 1~i 组成的 j 个逆序对的方案个数。对一个数组,假设第数组i个位置放的是k,那么我们可以通过以下步骤求出这个数组中的逆序对的个数。将数组的前i个元素分为两部分,即小于k的和大于k小于等于 i 的。 其中对于大于k小于等于i的部分,很明显贡献的逆序对个数是(i-k-1+1)=(i-k)个,那么
2022-01-05 11:44:00
280
原创 太阳之子的力扣之路 11.11
佛了,浏览器闪退了,刚写的全没了!!简略概括:①逆序对个数的动态规划②j个逆序对个数的方案数的动态规划③复杂度优化
2022-01-05 11:43:42
193
原创 力扣 1.5 剑指offer第一天
1576. 替换所有的问号给你一个仅包含小写英文字母和 ‘?’ 字符的字符串 s,请你将所有的 ‘?’ 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。注意:你 不能 修改非 ‘?’ 字符。题目测试用例保证 除 ‘?’ 字符 之外,不存在连续重复的字符。在完成所有转换(可能无需转换)后返回最终的字符串。如果有多个解决方案,请返回其中任何一个。可以证明,在给定的约束条件下,答案总是存在的。示例 1:输入:s = “?zs”输出:“azs”解释:该示例共有 25 种解决方案,从
2022-01-05 10:38:22
113
原创 太阳之子的力扣之路 1.3
class Solution { public String dayOfTheWeek(int day, int month, int year) { String[] week = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; int num_day=0; num_day+=(year-1971)*365+(year-1969)/4;.
2022-01-03 17:41:20
2972
原创 太阳之子的力扣之路 1.2
390. 消除游戏列表 arr 由在范围 [1, n] 中的所有整数组成,并按严格递增排序。请你对 arr 应用下述算法:从左到右,删除第一个数字,然后每隔一个数字删除一个,直到到达列表末尾。重复上面的步骤,但这次是从右到左。也就是,删除最右侧的数字,然后剩下的数字每隔一个删除一个。不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。给你整数 n ,返回 arr 最后剩下的数字。示例 1:输入:n = 9输出:6解释:arr = [1, 2, 3, 4, 5, 6, 7, 8
2022-01-02 15:21:59
4679
原创 太阳之子的力扣之路 12.24
1705. 吃苹果的最大数目有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。给你两个长度为 n 的整数数组 days 和 apples ,返
2021-12-24 10:58:16
3159
原创 太阳之子的力扣之路 12.20
475. 供暖器冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。在加热器的加热半径范围内的每个房屋都可以获得供暖。现在,给出位于一条水平线上的房屋 houses 和供暖器 heaters 的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。说明:所有供暖器都遵循你的半径标准,加热的半径也一样。示例 1:输入: houses = [1,2,3], heaters = [2]输出: 1解释: 仅在位置2上有一个供暖器。如果我们将加热半径设为1,那么所有房屋就都能得到供暖
2021-12-20 20:43:48
162
原创 太阳之子的力扣之路 12.18
419. 甲板上的战舰给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ ,返回在甲板 board 上放置的 战舰 的数量。战舰 只能水平或者垂直放置在 board 上。换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻的战舰)。class Solution { int x_change[]={0,
2021-12-18 20:44:51
1070
原创 太阳之子的力扣之路 12.15
851. 喧闹和富有有一组 n 个人作为实验对象,从 0 到 n - 1 编号,其中每个人都有不同数目的钱,以及不同程度的安静值(quietness)。为了方便起见,我们将编号为 x 的人简称为 "person x "。给你一个数组 richer ,其中 richer[i] = [ai, bi] 表示 person ai 比 person bi 更有钱。另给你一个整数数组 quiet ,其中 quiet[i] 是 person i 的安静值。richer 中所给出的数据 逻辑自恰(也就是说,在 pers
2021-12-15 20:44:32
87
原创 太阳之子的力扣之路 12.13
skyline807. 保持城市天际线给你一座由 n x n 个街区组成的城市,每个街区都包含一座立方体建筑。给你一个下标从 0 开始的 n x n 整数矩阵 grid ,其中 grid[r][c] 表示坐落于 r 行 c 列的建筑物的 高度 。城市的 天际线 是从远处观察城市时,所有建筑物形成的外部轮廓。从东、南、西、北四个主要方向观测到的 天际线 可能不同。我们被允许为 任意数量的建筑物 的高度增加 任意增量(不同建筑物的增量可能不同) 。 高度为 0 的建筑物的高度也可以增加。然而,增加的建筑
2021-12-13 22:21:20
86
原创 太阳之子的力扣之路 12.11
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]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]class Solution { ArrayList<List<Integer>
2021-12-11 16:12:45
1687
原创 太阳之子的力扣之路 12.8
滑动窗口问题递归回溯子集给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]提示:1 <= nums.length <= 10-10 <= nums[i] <= 10n
2021-12-08 18:51:05
88
原创 太阳之子的力扣之路 12.7
1034. 边界着色给你一个大小为 m x n 的整数矩阵 grid ,表示一个网格。另给你三个整数 row、col 和 color 。网格中的每个值表示该位置处的网格块的颜色。当两个网格块的颜色相同,而且在四个方向中任意一个方向上相邻时,它们属于同一 连通分量 。连通分量的边界 是指连通分量中的所有与不在分量中的网格块相邻(四个方向上)的所有网格块,或者在网格的边界上(第一行/列或最后一行/列)的所有网格块。请你使用指定颜色 color 为所有包含网格块 grid[row][col] 的 连通分量
2021-12-07 11:34:03
182
原创 太阳之子的力扣之路 12.2
class Solution {public String[] findRelativeRanks(int[] score) {int temp_arr[]=score.clone();Arrays.sort(temp_arr);HashMap<Integer,Integer> temp_map=new HashMap<>();for(int i=0;i<temp_arr.length;i++){temp_map.put(temp_arr[i],i);}Str.
2021-12-02 11:55:26
96
原创 太阳之子的力扣之路 12.1
连续字符给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。请你返回字符串的能量。示例 1:输入:s = “leetcode”输出:2解释:子字符串 “ee” 长度为 2 ,只包含字符 ‘e’ 。示例 2:输入:s = “abbcccddddeeeeedcba”输出:5解释:子字符串 “eeeee” 长度为 5 ,只包含字符 ‘e’ 。示例 3:输入:s = “triplepillooooow”输出:5示例 4:输入:s = “hooraa.
2021-12-01 09:45:12
2549
原创 太阳之子的力扣之路 11.30
省份数量 广度优先搜索class Solution { public int findCircleNum(int[][] isConnected) { Stack<Integer> stack=new Stack<Integer>(); if(isConnected.length==0){ return 0; } int visit[]=new int[isConnected.len
2021-11-30 11:57:43
115
原创 太阳之子的力扣之路 11.29
class Solution { public int[] kthSmallestPrimeFraction(int[] arr, int k) { PriorityQueue<int[]> pri = new PriorityQueue<>(new Comparator<>() { @Override public int compare(int o1[], int o2[]) { // TODO Auto-generate.
2021-11-29 11:44:52
2379
原创 太阳之子的力扣之路 11.28
class Solution { public List<Integer> findAnagrams(String s, String p) { List<Integer> result=new ArrayList<Integer>(); if(s.length()<p.length()){ return result; } int ap[]=new int[26];.
2021-11-28 19:23:18
781
原创 太阳之子的力扣之路 11.26
700. 二叉搜索树中的搜索给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \1 3和值: 2你应该返回如下子树: 2 / \ 1 3在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。/** * Definition for a binary tree
2021-11-26 23:13:55
93
原创 太阳之子的力扣之路 11.23
亲密字符串class Solution { public boolean buddyStrings(String s, String goal) { if(s.length()!=goal.length()){ return false; } boolean result=false; int tag[]=new int[3]; int num=0; HashMap<Ch
2021-11-23 22:38:30
92
原创 太阳之子的力扣之路 11.21
一 N叉树的最大深度/*// Definition for a Node.class Node { public int val; public List<Node> children; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, List<Node> _children) { va
2021-11-21 16:27:55
790
原创 太阳之子的力扣之路11.20
最长和谐子序列和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。示例 1:输入:nums = [1,3,2,2,5,2,3,7]输出:5解释:最长的和谐子序列是 [3,2,2,2,3]示例 2:输入:nums = [1,2,3,4]输出:2示例 3:输入:nums = [.
2021-11-21 00:08:07
94
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人