![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
wutu0513
这个作者很懒,什么都没留下…
展开
-
各种迷宫问题
迷宫游戏Ⅰ迷宫问题的解法就需要用到dfs。我们对上下左右四个方向,一个方向一个方向地尝试,如果沿着某个方向不能走到终点,我们就要原路返回,继续尝试其他方向,直到走出迷宫。这是一种最朴素的走迷宫方式,虽然效率也许比较低,但如果迷宫有解,就一定能走出终点。上面说的这种走法,就对应着我们要讲的dfs算法。首先找到起点s,走到每个点时,按照左、下、右、上的顺序尝试。每走到下一个点以后,我们把这个点当做起点s,继续按顺序尝试。如果某个点上下左右四个方向都尝试过,便回到走到这个点之前的点,这一步我们称之为回溯。原创 2022-04-05 17:38:02 · 3938 阅读 · 0 评论 -
自动生成括号 括号匹配 最长有效括号
近几日,在刷力扣时,看到 最长有效括号这一题(后文会给出解答),便想写一个自动生成括号组合并判断是否匹配的程序。一、自动生成括号及括号匹配 首先,我们要解决的是括号生成问题,当然,我们可以利用回溯法直接写出符合匹配规则的括号组合,但这样便没有判断是否匹配的必要,这不符合我的本意。 在括号生成中,先画出回溯树,在本问题中,就不对回溯树进行剪枝。不难发现,在每个可选择的结点中,都面临两种选择,选’(’ 或 ‘)’。该回溯树的终点就是路径的长度等于需要生成括号的个数,下面来看一下生成括号的程序。p原创 2022-04-03 16:44:36 · 1264 阅读 · 0 评论 -
LeetCode223. 矩形面积
223. 矩形面积难度中等149给你 二维 平面上两个 由直线构成的 矩形,请你计算并返回两个矩形覆盖的总面积。每个矩形由其 左下 顶点和 右上 顶点坐标表示:第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。第二个矩形由其左下顶点 (bx1, by1) 和右上顶点 (bx2, by2) 定义。示例 1:输入:ax1 = -3, ay1 = 0, ax2 = 3, ay2 = 4, bx1 = 0, by1 = -1, bx2 = 9, by2 = 2原创 2021-09-30 17:17:19 · 216 阅读 · 0 评论 -
LeetCode650. 只有两个键的键盘
650. 只有两个键的键盘(动态规划)难度中等最初记事本上只有一个字符 'A' 。你每次可以对这个记事本进行两种操作:Copy All(复制全部):复制这个记事本中的所有字符(不允许仅复制部分字符)。Paste(粘贴):粘贴 上一次 复制的字符。给你一个数字 n ,你需要使用最少的操作次数,在记事本上输出 恰好 n 个 'A' 。返回能够打印出 n 个 'A' 的最少操作次数。示例 1:输入:3输出:3解释:最初, 只有一个字符 'A'。第 1 步, 使用 Copy All 操原创 2021-09-26 21:17:04 · 99 阅读 · 0 评论 -
LeetCode371. 两整数之和
371. 两整数之和(位运算)难度中等给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。示例 1:输入:a = 1, b = 2输出:3示例 2:输入:a = 2, b = 3输出:5提示:-1000 <= a, b <= 1000class Solution { public int getSum(int a, int b) { while (b != 0) { int carry原创 2021-09-26 20:25:05 · 64 阅读 · 0 评论 -
LeetCode583. 两个字符串的删除操作
583. 两个字符串的删除操作(字符串)难度中等给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。示例:输入: "sea", "eat"输出: 2解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"提示:给定单词的长度不超过500。给定单词中的字符只含有小写字母。//最长公共子序列思想class Solution { public int minDistance原创 2021-09-25 16:39:10 · 57 阅读 · 0 评论 -
LeetCode430. 扁平化多级双向链表
430. 扁平化多级双向链表难度中等多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。示例 1:输入:head = [1,2,3,4,5,6,null,null,null,7,8,9,10,null,null,11,12]输出:[1,2,3,7,8,11,12,9,10,4,5,6原创 2021-09-25 11:29:08 · 76 阅读 · 0 评论 -
leetcode326.3的幂
326. 3的幂难度简单给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x示例 1:输入:n = 27输出:true示例 2:输入:n = 0输出:false示例 3:输入:n = 9输出:true示例 4:输入:n = 45输出:false提示:-231 <= n <= 231 - 1进阶:你能不使用循环或者递归来完原创 2021-09-23 15:01:37 · 82 阅读 · 0 评论 -
LeetCode725. 分隔链表
725. 分隔链表(链表)难度中等给你一个头结点为 head 的单链表和一个整数 k ,请你设计一个算法将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。这 k 个部分应该按照在链表中出现的顺序排列,并且排在前面的部分的长度应该大于或等于排在后面的长度。返回一个由上述 k 部分组成的数组。示例 1:输入:head = [1,2,3], k = 5输出:[[1],[2],[3],[],[]]解释:第一原创 2021-09-22 22:56:42 · 69 阅读 · 0 评论 -
LeetCode58最后一个字符串的长度
58. 最后一个单词的长度难度简单给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s = "Hello World"输出:5示例 2:输入:s = " fly me to the moon "输出:4示例 3:输入:s = "luffy is still joyboy"输出:6提示:1 <= s.length <= 104原创 2021-09-21 10:17:27 · 98 阅读 · 0 评论 -
LeetCode
从今天开始,我将会陆续更新LeetCode刷题系列,希望自己能坚持下去!!!原创 2021-09-20 15:58:08 · 48 阅读 · 0 评论 -
多会场活动安排问题(贪心思想)
多会场活动安排要求:在足够多的会场里安排一批活动,希望使用的会场个数最少原创 2021-07-06 17:54:25 · 597 阅读 · 0 评论 -
动态规划算法设计与实现java——硬币兑换
硬币兑换本实验选择求解“硬币兑换”问题,要求:计算最优值、构造最优解实验目标:掌握动态规划策略,提升分析解决复杂问题能力实验要求:理解动态规划基本原理,掌握动态规划算法设计步骤和程序实现,对算法性能进行分析得出结论实验内容:针对动态规划策略的典型应用问题(如0-1背包、矩阵连乘积、最优二叉查找树、硬币兑换等),设计动态规划求解算法,编程实现并分析算法性能先看代码package June21;import java.util.Arrays;import java.util.Scanne原创 2021-07-06 17:33:32 · 1626 阅读 · 1 评论 -
错误票据(蓝桥杯java)
第七题:错误票据某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。你的任务是通过编程,找出断号的ID和重号的ID。假设断号不可能发生在最大和最小号。要求程序首先输入一个整数N(N<100)表示后面数据行数。接着读入N行数据。每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000)每个整数原创 2021-05-31 19:03:04 · 355 阅读 · 2 评论 -
全排列(DFS)
全排列给定一个没有重复数字的序列,返回其所有可能的全排列。使用used数组标记public class Main { static int index = 0; public static void main(String[] args) { Scanner in = new Scanner(System.in); ArrayList<Integer> list = new ArrayList<>(); ArrayList<ArrayList<In原创 2021-05-30 22:06:46 · 96 阅读 · 0 评论 -
数组子集(含重复元素)
数组子集给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。示例:输入:nums = [1,2,2]输出:[ [] , [1] , [1,2] , [1,2,2] , [2] , [2 , 2] ]二进制子集枚举对于当前选择的数 x,若前面有与其相同的数 y,且没有选择 y,此时包含 xx的子集,必然会出现在包含 y 的所有子集中。我们可以通过判断这种情况,来避免生成重复的子集。原创 2021-05-30 21:14:15 · 463 阅读 · 1 评论 -
蓝桥杯 动态规划
动态规划步骤动态规划的的四个解题步骤是:定义子问题写出子问题的递推关系确定 DP 数组的计算顺序空间优化(可选)动态规划本质是递推,核心是找到状态转移的方式,写出dp方程经典题解打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。原创 2021-05-08 22:36:21 · 369 阅读 · 0 评论