
数据结构与算法
Blueming_first
一个刚刚开始学习的宝宝
展开
-
2020第十一届蓝桥杯省赛B组第一场 H.走方格
试题 H: 走方格问题描述时间限制: 1.0s 内存限制: 256.0MB 本题总分:20 分【问题描述】在平面上有一些二维的点阵。这些点的编号就像二维数组的编号一样,从上到下依次为第 1 至第 从左到右依次为第 1 至第 m 列,每一个点可以用行号和列号来表示。现在有个人站在第 1 行第 1 列,要走到第 n 行第 m 列。只能向右或者向下走。注意,如果行号和列数都是偶数,不能走入这一格中。问有多少种方案。【输入格式】输入一行包含两个整数 n, m。【输出格式】输出一个整数,表示答原创 2020-07-28 17:16:18 · 598 阅读 · 0 评论 -
Java实现 LeetCode 28.实现strStr() (KMP算法)
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “bba...原创 2020-04-20 21:43:10 · 243 阅读 · 0 评论 -
最小生成树 Prim算法和Kuskal算法(Java实现)
照着这个视频中老师的代码打了一遍Prim算法:由顶点确定边。package PrimAlgorithm;import java.util.Arrays;public class PrimAlgorithm { public static void main(String[] args) { //测试看看图是否创建成功 char[] data = new char[]{'A','B','C','D','E','F','G'}; int verxs = data.length;转载 2020-05-15 23:38:52 · 329 阅读 · 0 评论 -
Java实现 LeetCode 33.搜索旋转排序数组(分治算法)
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], targ...原创 2020-04-27 11:10:28 · 150 阅读 · 0 评论 -
Java实现 LeetCode 88.合并两个有序数组(双指针)
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = ...原创 2020-04-24 14:13:37 · 198 阅读 · 0 评论 -
算法训练 景点游览
@[TOC]蓝桥杯算法训练算法训练 景点游览你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。问题描述小明来到一个景区游玩,但是他的时间有限,没办法逛遍所有的景点,所以他从网上下载了每个景点的评分,他希望能够使游览的景点的评分总和最高,于是他希望你帮他对于N个景点排下...原创 2020-01-22 17:56:33 · 602 阅读 · 2 评论 -
Java实现 LeetCode 841.钥匙和房间(图dfs)
有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,…,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i],每个钥匙 rooms[i][j] 由 [0,1,…,N-1] 中的一个整数表示,其中 N = rooms.length。 钥匙 rooms[i][j] = v 可以打开编号为 v 的房间。最初,除 0 号房间外的其余所有房间都被锁住。你可以自由地在房间之间来回走动。如果能进入每个房间返回 true,否则返原创 2020-05-11 22:57:38 · 255 阅读 · 0 评论 -
Java实现 LeetCode 673.最长递增子序列的个数(动态规划)
给定一个未排序的整数数组,找到最长递增子序列的个数。示例 1:输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。示例 2:输入: [2,2,2,2,2]输出: 5解释: 最长递增子序列的长度是1,并且存在5个子序列的长度为1,因此输出5。注意: 给定的数组长度不超过 2000 并且结果一定是32位有...转载 2020-04-25 10:06:11 · 364 阅读 · 0 评论 -
算法训练 图形转换
题目编写一个程序,首先输入一个整数,例如5,然后在屏幕上显示如下的图形(5表示行数): * * * * * * * * * * * * * * *import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(...原创 2020-01-29 18:30:18 · 182 阅读 · 0 评论 -
第七届蓝桥杯JavaB组 凑算式(全排列)
凑算式(结果填空)这个算式中A ~ I代表1~9的数字,不同的字母代表不同的数字。比如:6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法。这个算式一共有多少种解法?注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。package 第七届;public class _03凑算式dfs { public static void m...原创 2020-03-16 09:28:02 · 216 阅读 · 0 评论 -
2019第十届蓝桥杯JavaB组省赛
第一题 组队题目描述作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容。每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大可能是多少?(如果你把以上文字复制到文本文件中,请务必检查复制的内容是否与文 档中的一致。在试题目录下有一个文件 team.txt,内容与上面表格中的相同, 请注意第一列...原创 2020-04-05 19:02:10 · 522 阅读 · 0 评论 -
Java/Python实现 LeetCode 303.区域和检索-数组不可变(前缀和)
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3说明:你可以假设数组不可变。会多次调用 sumRange 方法。来源:力扣(LeetCode)链接:https://leetcode-c原创 2020-07-14 19:13:16 · 177 阅读 · 0 评论 -
Java实现 LeetCode 41.缺失的第一个正数(双指针)
给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。通过次数68,176提交次数171,605来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/first-missing-positive著作权归领扣网络原创 2020-06-27 20:20:07 · 184 阅读 · 0 评论 -
LeetCode 1395.统计作战单位数
n 名士兵站成一排。每个士兵都有一个 独一无二 的评分 rating 。每 3 个士兵可以组成一个作战单位,分组规则如下:从队伍中选出下标分别为 i、j、k 的 3 名士兵,他们的评分分别为 rating[i]、rating[j]、rating[k]作战单位需满足: rating[i] < rating[j] < rating[k] 或者 rating[i] > ratin...原创 2020-04-03 22:48:43 · 224 阅读 · 0 评论 -
LeetCode 130. 被围绕的区域
给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。...原创 2020-03-31 12:04:23 · 124 阅读 · 0 评论 -
算法练习 排序
题目编写一个程序,输入3个整数,然后程序将对这三个整数按照从大到小进行排列。 输入格式:输入只有一行,即三个整数,中间用空格隔开。 输出格式:输出只有一行,即排序后的结果。 输入输出样例样例输入9 2 30样例输出30 9 2在这里插入代码片...原创 2020-01-29 18:33:37 · 180 阅读 · 0 评论 -
第九届 蓝桥杯 JavaB组 全球变暖
标题:全球变暖你有一张某海域NxN像素的照片,".“表示海洋、”#"表示陆地,如下所示:….##….##……##.…####.…###.…其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被...原创 2020-03-15 17:58:54 · 156 阅读 · 0 评论 -
Java实现 1042.不邻接植花(图)
有 N 个花园,按从 1 到 N 标记。在每个花园中,你打算种下四种花之一。paths[i] = [x, y] 描述了花园 x 到花园 y 的双向路径。另外,没有花园有 3 条以上的路径可以进入或者离开。你需要为每个花园选择一种花,使得通过路径相连的任何两个花园中的花的种类互不相同。以数组形式返回选择的方案作为答案 answer,其中 answer[i] 为在第 (i+1) 个花园中种植的...原创 2020-05-07 14:33:09 · 243 阅读 · 0 评论 -
Java实现 LeetCode 127.单词接龙(搜索)
给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWo...原创 2020-04-16 12:02:24 · 198 阅读 · 0 评论 -
Java/python 实现 LeetCode 面试题16.17.连续数列(动态规划)
给定一个整数数组,找出总和最大的连续数列,并返回总和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/contiguous-sequence-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。Javac原创 2020-07-16 19:33:42 · 210 阅读 · 0 评论 -
Java实现 LeetCode 518.零钱兑换II(动态规划)
给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。示例 1:输入: amount = 5, coins = [1, 2, 5]输出: 4解释: 有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1示例 2:输入: amount = 3, coins = [2]输出: 0解释: 只用面额2...原创 2020-04-30 14:33:04 · 655 阅读 · 0 评论 -
Java实现 LeetCode 面试题16.01.交换数字
编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。示例:输入: numbers = [1,2]输出: [2,1]提示:numbers.length == 2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/swap-numbers-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。加法:class Solution { public int[] swapNumbers(i原创 2020-08-01 17:00:46 · 257 阅读 · 0 评论 -
Java实现 LeetCode 494.目标和(01背包 动态规划)
给定一个非负整数数组,a1, a2, …, an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例 1:输入: nums: [1, 1, 1, 1, 1], S: 3输出: 5解释:-1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1...原创 2020-05-01 11:05:35 · 210 阅读 · 0 评论 -
算法练习 大小写转换
大小写转换问题描述编写一个程序,输入一个字符串(长度不超过20),然后把这个字符串内的每一个字符进行大小写变换,即将大写字母变成小写,小写字母变成大写,然后把这个新的字符串输出。输入格式:输入一个字符串,而且这个字符串当中只包含英文字母,不包含其他类型的字符,也没有空格。输出格式:输出经过转换后的字符串。...原创 2020-01-23 17:24:22 · 306 阅读 · 0 评论 -
2020第十一届蓝桥杯省赛B组第一场 F.整除序列
试题 F: 整除序列问题描述时间限制: 1.0s 内存限制: 256.0MB 本题总分:15【问题描述】有一个序列,序列的第一个数是 n,后面的每个数是前一个数整除 2,出这个序列中值为正数的项。【输入格式】输入一行包含一个整数 n。【输出格式】输出一行,包含多个整数,相邻的整数之间用一个空格分隔,表示答案。【样例输入】20【样例输出】20 10 5 2 1【评测用例规模与约定】对于 80% 的评测用例,1 ≤ n ≤ 10^9。对于所有评测用例,1 ≤ n ≤ 10^18。原创 2020-07-28 16:15:08 · 530 阅读 · 0 评论 -
leetcode 面试题08.05.递归乘法
递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。示例1:输入:A = 1, B = 10输出:10示例2:输入:A = 3, B = 4输出:12提示:保证乘法范围不会溢出https://leetcode-cn.com/problems/recursive-mulitply-lcci/public int mult...原创 2020-03-22 10:44:23 · 521 阅读 · 0 评论 -
矩阵转置(Java和C语言)
Java和C语言的矩阵转置我用的不同的方法Java:创建一个辅助矩阵,将原矩阵按列输出,存入辅助矩阵中,得到原矩阵的转置矩阵。package 数组;public class 矩阵转置 { public static void main(String[] args) { int[][] nums = {{1,2,3},{5,6,7},{9,10,11}}; //其实这些都相等,矩...原创 2020-04-14 17:40:35 · 447 阅读 · 0 评论 -
Java实现 LeetCode 765.情侣牵手
N 对情侣坐在连续排列的 2N 个座位上,想要牵到对方的手。 计算最少交换座位的次数,以便每对情侣可以并肩坐在一起。 一次交换可选择任意两人,让他们站起来交换座位。人和座位用 0 到 2N-1 的整数表示,情侣们按顺序编号,第一对是 (0, 1),第二对是 (2, 3),以此类推,最后一对是 (2N-2, 2N-1)。这些情侣的初始座位 row[i] 是由最初始坐在第 i 个座位上的人决定的。示例 1:输入: row = [0, 2, 1, 3]输出: 1解释: 我们只需要交换row[1]和r原创 2020-07-05 18:59:48 · 282 阅读 · 0 评论 -
Java实现 LeetCode 57.插入区间
给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例 1:输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输出:[[1,5],[6,9]]示例 2:输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]输出:[[1,2],[3,10],[12,16]]解释:原创 2020-08-14 17:11:36 · 215 阅读 · 0 评论 -
Python/Java实现 LeetCode 面试题 16.11.跳水板
你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。示例:输入:shorter = 1longer = 2k = 3输出: {3,4,5,6}提示:0 < shorter <= longer0 <= k <= 100000来源:力扣(LeetCode)链接:https://leetcode-cn.co原创 2020-07-08 16:40:39 · 274 阅读 · 0 评论 -
2015 蓝桥杯第六届JavaB组省赛
第一题 三角形面积题目描述如图1所示。图中的所有小方格面积都是1。那么,图中的三角形面积应该是多少呢?请填写三角形的面积。不要填写任何多余内容或说明性文字。解析:8*8的小方格减去三个小三角形的面积答案:28第二题 立方变自身题目描述观察下面的现象,某个数字的立方,按位累加仍然等于自身。1^3 = 18^3 = 512 5+1+2=817^3 = 4913 4+9+1+3...原创 2020-03-20 19:45:17 · 139 阅读 · 0 评论 -
Java实现 LeetCode 11.盛最多水的容器(双指针)
给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色...原创 2020-04-18 14:13:43 · 173 阅读 · 0 评论 -
KMP算法
KMP算法讲得很好的文章:https://www.cnblogs.com/dusf/p/kmp.htmlKMP算法的核心就是找出要移动的位数移动位数 = 已匹配的字符数 - 对应的部分匹配值A B C D A B D0 0 0 0 1 2 06 - 2 = 4所以向移动位数是4串的模式匹配-KMP算法分两步1、得到子串的部分匹配表(注意对象是子串)2、使用得到的部分匹配表...原创 2020-04-09 17:44:33 · 153 阅读 · 0 评论 -
试题 算法训练 大小写转换(Java实现)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 输入一个字符串,将大写字符变成小写、小写变成大写,然后输出输入格式 acbAB输出格式 ACBab样例输入一个满足题目要求的输入范例。例:acbAB样例输出与上面的样例输入对应的输出。例:ACBab数据规模和约定 输入数据中每一个数的范围。 例:0<n,m<100, 0<...原创 2020-03-02 10:10:26 · 440 阅读 · 0 评论 -
Java实现 LeetCode 309.最佳买卖股票时机含冷冻期(动态规划)
给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3解释: 对应的交易状态为: [买入, 卖出, 冷冻...原创 2020-05-04 13:27:52 · 323 阅读 · 0 评论 -
Java实现 LeetCode 139.单词拆分(bfs,dp)
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。示例 2:输入: s = “applepenapple”, wordDict =原创 2020-06-25 21:52:03 · 224 阅读 · 0 评论 -
Java实现 LeetCode 面试题 16.18.模式匹配
你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。示例 1:输入: pattern = “abba”, value = “dogcatcatdog”输出: true原创 2020-06-22 22:26:41 · 244 阅读 · 0 评论 -
Java实现 LeetCode 组合总和(I-IV)(dfs)
共同特征:都是用一个数组凑出一个目标数,每道题的限制有些不同,都能够用 dfs+回溯+剪枝。传递一个sum参数,判断能否将新的数字加入到ans序列中。39.组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 t...原创 2020-05-02 11:35:03 · 263 阅读 · 0 评论 -
2020第十一届蓝桥杯省赛B组第一场 B.纪念日
【问题描述】2020 年 7 月 1 日是中国某党成立 99 周年纪念日。中国某党成立于 1921 年 7 月 23 日。请问从 1921 年 7 月 23 日中午 12 时到 2020 年 7 月 1 日中午 12 时一含多少分钟?【答案提交】这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。注:要求输出分钟, 时间23日-21日答案:52037280计算两个年份相差时间的题,容易算错尽量使用Date, Calendar原创 2020-07-28 15:40:23 · 1119 阅读 · 3 评论 -
LeetCode 找出数组中的幸运数
在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。给你一个整数数组 arr,请你从中找出并返回一个幸运数。如果数组中存在多个幸运数,只需返回 最大 的那个。如果数组中不含幸运数,则返回 -1 。示例 1:输入:arr = [2,2,3,4]输出:2解释:数组中唯一的幸运数是 2 ,因为数值 2 的出现频次也是 2 。示例 2:输入:arr = ...原创 2020-04-03 22:51:42 · 390 阅读 · 0 评论