
LeetCode
Unknown To Known
这个作者很懒,什么都没留下…
展开
-
LeetCode算法 删除有序数组中的重复项 删除有序数组中的重复项|| C++
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素最多出现。为什么返回数值是整数,但输出的答案是数组呢?原创 2023-05-19 17:01:14 · 559 阅读 · 0 评论 -
LeetCode算法 买股票的最佳时机 买股票的最佳时机|| 买股票的最佳时机||| C++
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。原创 2023-05-10 17:42:31 · 648 阅读 · 0 评论 -
LeetCode算法 路径总和 和 路径总和 || C++
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。叶子节点 是指没有子节点的节点。原创 2023-04-13 10:26:31 · 121 阅读 · 0 评论 -
LeetCode算法 二叉树的最小深度 二叉树的最大深度 C++
给定二叉树 [3,9,20,null,null,15,7],最小深度是从根节点到最近叶子节点的最短路径上的节点数量。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。说明:叶子节点是指没有子节点的节点。给定一个二叉树,找出其最小深度。树中节点数的范围在 [0, 10。给定一个二叉树,找出其最大深度。返回它的最大深度 3。原创 2023-04-09 15:58:17 · 394 阅读 · 0 评论 -
LeetCode算法 单词接龙 和 单词接龙|| C++
请你找出并返回所有从 beginWord 到 endWord 的 最短转换序列 ,如果不存在这样的转换序列,返回一个空列表。给你两个单词 beginWord 和 endWord 和一个字典 wordList ,找到从 beginWord 到 endWord 的 最短转换序列 中的 单词数目。按字典 wordList 完成从单词 beginWord 到单词 endWord 转化,一个表示此过程的 转换序列 是形式上像 beginWord -> s。序列中最后一个单词是 endWord。原创 2023-04-01 10:39:18 · 218 阅读 · 0 评论 -
LeetCode算法 Excel表列名称 和 从Excel表列序号 C++
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。给定一个Excel表格中的列名称,返回其相应的列序号。原创 2023-03-29 11:10:53 · 212 阅读 · 0 评论 -
LeetCode算法 从前序与中序遍历序列构造二叉树 和 从中序与后序遍历序列构造二叉树 C++
注意: 你可以假设树中没有重复的元素。根据一棵树的前序遍历与中序遍历构造二叉树。根据一棵树的中序遍历与后序遍历构造二叉树。你可以假设树中没有重复的元素。原创 2023-03-28 16:23:35 · 73 阅读 · 0 评论 -
LeetCode算法 n皇后问题 和 n皇后问题II C++
每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。原创 2023-03-27 20:46:31 · 80 阅读 · 0 评论 -
LeetCode算法 杨辉三角 和 杨辉三角II C++
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。在杨辉三角中,每个数是它左上方和右上方的数的和。原创 2023-03-26 18:11:43 · 64 阅读 · 0 评论 -
LeetCode算法 打家劫舍 和 打家劫舍II C++
同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。输入:[2,7,9,3,1]原创 2023-03-25 15:44:01 · 754 阅读 · 0 评论 -
LeetCode算法 岛屿数量 C++
给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。原创 2023-03-22 21:23:43 · 80 阅读 · 0 评论 -
LeetCode算法 不同路径 和 不同路径II C++
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。原创 2023-03-20 20:41:21 · 531 阅读 · 0 评论 -
LeetCode算法 不同的二叉搜索树 和 不同的二叉搜索树II C++
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。原创 2023-03-12 16:07:02 · 76 阅读 · 0 评论 -
LeetCode算法 编辑距离 C++
给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数。原创 2023-03-06 20:16:18 · 82 阅读 · 0 评论 -
LeetCode算法 被围绕的区域 C++
给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。原创 2023-03-01 09:22:07 · 84 阅读 · 0 评论 -
LeetCode算法 比较版本号 C++
给你两个版本号 version1 和 version2 ,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值。原创 2023-02-26 16:13:49 · 171 阅读 · 0 评论 -
【1 day】C++算法练习 剑指Offer 09 30
**用两个栈实现一个队列,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )**原创 2022-09-20 19:23:20 · 418 阅读 · 0 评论 -
Java输出九九乘法表
package algorithm;public class 九九乘法表 { public static void main(String[] args) { for(int i = 1;i<10;i++){ for(int j = 1;j<=i;j++){ System.out.print(i+"*"+j+"="+i*j); System.out.print("\t"); } System.out.println(); } }}...原创 2022-02-10 13:11:32 · 639 阅读 · 0 评论 -
7-7 12-24小时制 (15 分) java
编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。输入格式:输入在一行中给出带有中间的:符号(半角的冒号)的24小时制的时间,如12:34表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分。提示:在scanf的格式字符串中加入:,让scanf来处理这个冒号。输出格式:在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串PM。如5:6 PM表示下午5点零6分。注意,在英文的原创 2021-06-30 23:30:27 · 493 阅读 · 0 评论 -
7-6 混合类型数据格式化输入 (5 分) java
本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。输入格式:输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。输出格式:在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。输入样例:2.12 88 c 4.7输出样例:c 88 2.12 4.70import java.util.Scanner;import java.text.DecimalFormat;public class原创 2021-06-29 23:18:36 · 303 阅读 · 0 评论 -
7-2 然后是几点
7-2 然后是几点有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。输入格式:输入在一行中给出 2 个整数,分别是四位数字表示的原创 2021-06-26 23:43:24 · 105 阅读 · 0 评论 -
LCP 06. 拿硬币
桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。示例 1:输入:[4,2,1]输出:4解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。示例 2:输入:[2,3,10]输出:8//每次拿两个最好public int minCount(int[] coins) { int i = 0; int num = 0; whi原创 2020-12-15 22:16:01 · 198 阅读 · 0 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题Java
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。用f(1)表示跳到第一个台阶的路径数用f(2)表示跳到第二个台阶的路径数用f(3)表示跳到第三个台阶的路径数用f(4)表示跳到第四个台阶的路径数用f(n)表示跳到第n个台阶的路径数当有0个台阶时,有一种方式(算法上的规定)当有1个台阶时,有一种方式当有2个台阶时,有两种方式当有3个台阶时,原创 2020-12-14 22:28:45 · 225 阅读 · 0 评论 -
算法题 N-自守数
如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”。例如:3×922= 25392,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守数。本题就请你编写程序判断一个给定的数字是否关于某个 N 是 N-自守数。输入格式:输入在第一行中给出正整数 M(≤20),随后一行给出 M 个待检测的、不超过 1000 的正整数。输出格式:对每个需要检测的数字,如果它是 N-自守数就在一行中输出最小的 N 和 NK 2的值,以一个空格隔开;否则输原创 2020-12-02 22:15:40 · 235 阅读 · 2 评论 -
LeetCode算法第319题 灯泡开关 Java
初始时有n个灯泡关闭。第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第i 轮,每i个灯泡切换一次开关。 对于第n轮,你只切换最后一个灯泡的开关。找出n轮后有多少个亮着的灯泡。我第一次看这个题是以为每轮,每组全部都要转换开关,其实不是它是每轮,每组的最后一个转换开关。我已4个灯泡为例。第二轮是每两个一组,每组的最后一个转换开关。第三轮是每三个一组,每组的最后一个转换开关。第一轮:开 开 开 开第二轮原创 2020-12-01 21:19:35 · 408 阅读 · 0 评论 -
LeetCode算法第53题 最大子序和 Java
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路:当前面的和加上当前数字的和小于之前的和,前面退出以为加上后面的, 当前面的和加上当前数字的和大于之前的和,前面保持再加上后面的。class Solution { public int maxSubArray(int[] nums) { in原创 2020-11-25 22:43:29 · 182 阅读 · 0 评论 -
LeetCode算法第198题 打家劫舍 Java
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。class Solution { public int rob(int[] nums) { int t = nums.length; //如果没有房屋就返回零 if(t ==原创 2020-11-21 15:39:15 · 190 阅读 · 0 评论 -
LeetCode算法第15题 三数之和 Java
给你一个包含 n 个整数的数组?nums,判断?nums?中是否存在三个元素 a,b,c ,使得?a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]package algorithm;import java.util.ArrayList;import java.util.Arr原创 2020-11-19 23:22:06 · 264 阅读 · 2 评论 -
LeetCode算法第3题 无重复字符的最长子串
class Solution { public int lengthOfLongestSubstring(String s) { int res =0; //第一次开始遍历 for(int i =0; i<s.length();i++){ //创建一个HashSet集合 无序,不能存放重复值 Set<Character> set = new HashSet<>(); //第二次遍历开始原创 2020-11-18 21:08:03 · 102 阅读 · 0 评论 -
LeetCode算法第7题 整数反转 Java
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [?231, 231 ? 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 int y = 0; while (x != 0) { //环境只能存储32位整数,当数字溢出是返回0 32位最大数字是21478364 if (y > 214748364 || y < -214748364) { return 0;原创 2020-11-16 22:09:16 · 96 阅读 · 0 评论 -
LeetCode算法第2题 两数相加(链表)
class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { //用于进位计数 int addOne = 0; //创建一个新节点,数据域为0; ListNode top = new ListNode(0); //此节点(指针)用于后面存放数据 ListNode head = top; //l1 l2 addOne 只要其中一个不为空就要进原创 2020-11-15 23:02:45 · 132 阅读 · 0 评论 -
LeetCode算法第1题 两数之和(暴力解除)
class Solution { public int[] twoSum(int[] nums, int target) { for(int i=0;i<nums.length;i++){ for(int j=i+1;j<nums.length;j++){ if(nums[i]+nums[j]==target){ return new int[] {i,j};原创 2020-11-15 23:01:32 · 81 阅读 · 0 评论