Leetcode
Lossanin
If you were my wisdom.
展开
-
Leetcode-989. 数组形式的整数加法(Java)
对于非负整数X而言,X的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果X = 1231,那么其数组形式为[1,2,3,1]。给定非负整数 X 的数组形式A,返回整数X+K的数组形式。示例 1:输入:A = [1,2,0,0], K = 34输出:[1,2,3,4]解释:1200 + 34 = 1234示例 2:输入:A = [2,7,4], K = 181输出:[4,5,5]解释:274 + 181 = 455示例 3:输入:A = [2,1,5...原创 2021-10-14 06:57:56 · 106 阅读 · 0 评论 -
DFS-求迷宫最短路径和路径个数
测试用例://5 5 矩阵m n//1 0 起点x y//3 3 终点x y //2 障碍物个数//2 2 障碍物1坐标//2 1 障碍物2坐标import java.util.Scanner;//5 5 矩阵m n//1 0 起点x y//3 3 终点x y //2 障碍物个数 //2 2 障碍物1坐标//2 1 障碍物2坐标 public class HW...原创 2021-10-14 06:21:53 · 690 阅读 · 0 评论 -
Leetcode-面试题 08.11. 硬币(Java)
硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1:输入: n = 5输出:2解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2:输入: n = 10输出:4解释: 有四种方式可以凑成总金额:10=1010=5+510=5+1+1+1+1+110=1+1+1+1+1+1+1+1+1+1来源:力扣(LeetCode)链接:https://l...原创 2021-10-13 18:40:57 · 92 阅读 · 0 评论 -
NC81:二叉搜索树的第k个结点
public class Solution { List<TreeNode> res = new ArrayList<>(); TreeNode KthNode(TreeNode pRoot, int k) { int length = inorder(pRoot); if((length<k) || (k==0)){ return null; } return res.g.原创 2021-09-24 06:23:54 · 95 阅读 · 0 评论 -
Leetcode-26. 删除有序数组中的重复项(JAVA)
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = removeDuplic原创 2021-09-24 05:32:01 · 334 阅读 · 0 评论 -
Leetcode-121. 买卖股票的最佳时机(JAVA)
给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注...原创 2021-09-24 04:41:08 · 96 阅读 · 0 评论 -
Leetcode-1091. 二进制矩阵中的最短路径(Java)
给你一个 n x n 的二进制矩阵 grid 中,返回矩阵中最短 畅通路径 的长度。如果不存在这样的路径,返回 -1 。二进制矩阵中的 畅通路径 是一条从 左上角 单元格(即,(0, 0))到 右下角 单元格(即,(n - 1, n - 1))的路径,该路径同时满足下述要求:路径途经的所有单元格都的值都是 0 。路径中所有相邻的单元格应当在 8 个方向之一 上连通(即,相邻两单元之间彼此不同且共享一条边或者一个角)。畅通路径的长度 是该路径途经的单元格总数。示例 1:来源:力扣(Le原创 2021-09-13 01:00:18 · 204 阅读 · 0 评论 -
Leetcode-剑指 Offer II 099. 最小路径之和(Java)
给定一个包含非负整数的 mxn网格grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:一个机器人每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12提示:m == grid.lengthn == grid[i].length...原创 2021-09-12 22:56:49 · 248 阅读 · 0 评论 -
Leetcode-200. 岛屿数量(Java)
给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2:输入:grid = ...原创 2021-09-12 20:55:04 · 242 阅读 · 0 评论 -
Leetcode-2. 两数相加(JAVA)
给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,...原创 2021-09-12 07:35:25 · 89 阅读 · 0 评论 -
Leetcode-70. 爬楼梯(JAVA)
假设你正在爬楼梯。需要 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 阶来源:力扣(LeetCode)链接:https://leetcod...原创 2021-09-09 07:27:14 · 113 阅读 · 0 评论 -
Leetcode-128. 最长连续序列(JAVA)
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为O(n) 的算法解决此问题。示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9提示:0 <= nums.length <= 105-109 <= nums..原创 2021-09-09 07:17:41 · 144 阅读 · 0 评论 -
Leetcode-75. 颜色分类(JAVA)
给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:输入:nums = [0]输出:[0]示例 4:输入:nums = [1]输出:[1]来源:力扣(LeetC..原创 2021-09-07 07:16:11 · 96 阅读 · 0 评论 -
Leetcode-36. 有效的数独(JAVA)
请你判断一个9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用'.'表示。注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。输入:board =[["5","3",".",".","7",".","."...原创 2021-09-07 06:19:07 · 64 阅读 · 0 评论 -
Practice-链表快排
public class ListQuickSort { public static final int R = 50; public static void main(String[] args){ int[] arr = new int[]{2,32,78,16,23,5,0,1,17,19,21}; ListNode head = new ListNode(0); ListNode p = head; for (in.原创 2021-08-18 17:57:55 · 63 阅读 · 0 评论 -
Leetcode-53. 最大子序和(JAVA)
给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000来源:力扣...原创 2021-07-31 09:42:16 · 77 阅读 · 0 评论 -
Leetcode-217. 存在重复元素(JAVA)
给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/contains-duplicate著作.原创 2021-07-31 06:07:26 · 88 阅读 · 0 评论 -
剑指Offer-09. 用两个栈实现队列(Java)
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","deleteHead","appendTail.原创 2021-07-30 03:45:57 · 129 阅读 · 0 评论 -
Practice-两个线程交替打印1-90(Java)
package com.cai;public class MultiThreadPrint { public static void main(String[] args) { Object o = new Object(); new Thread(new NumberPrintRunnable1(o)).start(); new Thread(new NumberPrintRunnable2(o)).start(); }}clas.原创 2021-07-28 04:44:57 · 136 阅读 · 0 评论 -
Leetcode-21. 合并两个有序链表(JAVA)
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100l1 和 l2 均按 非递减顺序 排列..原创 2021-07-27 06:37:40 · 124 阅读 · 0 评论 -
Leetcode-438. 找到字符串中所有字母异位词(JAVA)
给定一个 n×n 的二维矩阵matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]示例 2:输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[1...原创 2021-07-27 04:57:57 · 149 阅读 · 0 评论 -
Leetcode-438. 找到字符串中所有字母异位词(JAVA)
给定两个字符串s和 p,找到s中所有p的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词 指字母相同,但排列不同的字符串。示例1:输入: s = "cbaebabacd", p = "abc"输出: [0,6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。示例 2:输入: s = "abab", p = "ab"输出: [0,1,2]解释...原创 2021-07-25 06:38:01 · 280 阅读 · 0 评论 -
Leetcode-7. 整数反转(JAVA)
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[−231,231− 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0来源:力扣(LeetCode)链接:https://leetcode-cn...原创 2021-07-25 05:53:42 · 120 阅读 · 0 评论 -
Leetcode-88. 合并两个有序数组(JAVA)
给你两个有序整数数组nums1 和 nums2,请你将 nums2 合并到nums1中,使 nums1 成为一个有序数组。初始化nums1 和 nums2 的元素数量分别为m 和 n 。你可以假设nums1 的空间大小等于m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]示例 2:输入:nums1 = [1]...原创 2021-07-25 05:17:15 · 146 阅读 · 0 评论 -
Leetcode-49. 字母异位词分组(JAVA)
给定一个字符串数组,将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词指字母相同,但排列不同的字符串。示例 1:输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]输出: [["bat"],["nat","tan"],["ate","eat","tea"]]示例 2:输入: strs = [""]输出: [[""]]示例 3:输入: strs = ["a"]输出: [["a"]]提示:1 <.原创 2021-07-24 06:40:46 · 170 阅读 · 0 评论 -
Leetcode-剑指 Offer 10- I. 斐波那契数列(JAVA)
写一个函数,输入 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输出:1示例 2:输入:n = 5输出...原创 2021-07-23 08:46:06 · 90 阅读 · 0 评论 -
Leetcode-11. 盛最多水的容器(JAVA)
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。示例 2...原创 2021-07-23 08:41:52 · 173 阅读 · 0 评论 -
Leetcode-145. 二叉树的后序遍历(JAVA)
给定一个二叉树,返回它的 后序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [3,2,1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal1.递归/** * Definition for a binary tree node. * public class TreeNode { * ...原创 2021-07-21 00:55:35 · 143 阅读 · 0 评论 -
Leetcode-94. 二叉树的中序遍历(JAVA)
给你二叉树的根节点 root ,返回它节点值的中序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5:输入:root = [1,null,2]输出:[1,2]来源:力扣(LeetCode)链接:https://leetcode-cn.com/proble..原创 2021-07-20 01:28:51 · 84 阅读 · 0 评论 -
Leetcode-剑指 Offer 32 - III. 从上到下打印二叉树 III(JAVA)
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [20,9], [15,7]]提示:节点总数 <= 1000来源:力扣(LeetCode)链接:https://leetco...原创 2021-07-18 23:33:24 · 96 阅读 · 1 评论 -
Leetcode-144. 二叉树的前序遍历(JAVA)
给你二叉树的根节点 root ,返回它节点值的前序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5:输入:root = [1,null,2]输出:[1,2]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/b..原创 2021-07-18 08:29:52 · 118 阅读 · 0 评论 -
Leetcode-61. 旋转链表(JAVA)
给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动k个位置。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例2:输入:head = [0,1,2], k = 4输出:[2,0,1]链表中节点的数目在范围 [0, 500] 内-100 <= Node.val <= 1000 <= k <= 2 * 109来源:力扣(LeetCode)链接:https://leetcode-cn...原创 2021-07-18 08:10:35 · 201 阅读 · 0 评论 -
Leetcode-1. 两数之和(JAVA)
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4...原创 2021-07-17 18:28:27 · 38 阅读 · 0 评论 -
Leetcode-206.反转链表(JAVA)
给你单链表的头节点head,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]输入:head = []输出:[]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-list//** * Definition for singly-linked list. * public class ListNode { * int val;..原创 2021-07-16 22:23:16 · 60 阅读 · 0 评论 -
Leetcode-122.买卖股票的最佳时机 II(JAVA)
给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 ...原创 2020-11-23 22:05:24 · 82 阅读 · 0 评论 -
Leetcode-771宝石与石头(JAVA)
给定字符串J代表石头中宝石的类型,和字符串S代表你拥有的石头。S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J中的字母不重复,J和S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = "aA", S = "aAAbbbb"输出: 3示例 2:输入: J = "z", S = "ZZ"输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/proble...原创 2020-11-23 18:21:47 · 89 阅读 · 0 评论 -
Leetcode-53最大子序和(JAVA)
给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarrayclass Solution { public int maxSubArray(int[] nums) ...原创 2020-11-23 17:39:54 · 64 阅读 · 0 评论 -
Leetcode-9回文数(JAVA)
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindr.原创 2020-11-23 15:10:45 · 45 阅读 · 0 评论 -
Leetcode-14最长公共前缀(JAVA)
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-common-prefixcla...原创 2020-11-23 15:03:53 · 77 阅读 · 0 评论 -
Leetcode-20有效的括号(JAVA)
给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses方法1:class Solution { public boolean isValid(String s) { .原创 2020-11-23 14:31:34 · 67 阅读 · 0 评论