算法题解
算法题解
前程似锦蝈蝈
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
蓝桥杯 D. 方格分割 dfs
D. 方格分割6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图就是可行的分割法。试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。请提交该整数,不要填写任何多余的内容或说明文字。#include<iostream>using namespace std;int book[7][7] = { 0 };int ans = 0;int dir[4][2] = { {-1,0},{1,0},{0,1},{0,-1}原创 2021-04-12 18:04:21 · 174 阅读 · 0 评论 -
蓝桥杯 全球变暖
全球变暖【2018 第九题】【题目描述】你有一张某海域 NxN 像素的照片,".“表示海洋、”#"表示陆地,如下所示:….##….##……##.…####.…###.…其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有 2 座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。例如上图中的海域未来会变成如下样子:……………#………原创 2021-04-10 13:26:58 · 137 阅读 · 0 评论 -
蓝桥杯 ---合根植物(并查集)
问题描述w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?输入格式第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1000)。接下来一行,一个整数k,表示下面还有k行数据(0<k<100000)接下来k行,第2+k行两个整数原创 2021-04-07 15:56:00 · 154 阅读 · 0 评论 -
蓝桥杯 外卖店的优先级
题目描述“饱了么”外卖系统中维护着 N NN 家外卖店,编号 1 ∼ N 1∼N1∼N。每家外卖店都有一个优先级,初始时 (0 00 时刻) 优先级都为 0 00。每经过 1 11 个时间单位,如果外卖店没有订单,则优先级会减少 1 11,最低减到 0 00;而如果外卖店有订单,则优先级不减反加,每有一单优先级加 2 22。如果某家外卖店某时刻优先级大于 5 55,则会被系统加入优先缓存中;如果优先级小于等于 3 33,则会被清除出优先缓存。给定 T TT 时刻以内的 M MM 条订单信息,请你计原创 2021-04-05 18:34:49 · 261 阅读 · 0 评论 -
蓝桥杯 完全二叉树的权值
试题 F: 完全二叉树的权值【问题描述】给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从上到下、从左到右的顺序依次是 A1, A2, · · · AN现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。注:根的深度是 1。【输入格式】第一行包含一个整数 N。第二行包含 N 个整数 A1, A2, · · · AN 。【输出格式】输出一个整数代表答案。【样例输入】71 6 5 4 3原创 2021-04-05 17:36:00 · 158 阅读 · 0 评论 -
蓝桥杯迷宫 BFS
【问题描述】 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方。010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。 对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫, 一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。 对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式, 其使用的步数最少,在步数最原创 2021-04-02 19:49:27 · 128 阅读 · 0 评论 -
leetcode 493 反转对 归并排序
给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。你需要返回给定数组中的重要翻转对的数量。示例 1:输入: [1,3,2,3,1]输出: 2示例 2:输入: [2,4,3,5,1]输出: 3代码:#include<iostream>#include<vector>using namespace std;class Solution {public: int原创 2020-11-30 20:01:58 · 200 阅读 · 0 评论 -
查找常用字符 一些语法点 leetcode1002
给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。示例 1:输入:[“bella”,“label”,“roller”]输出:[“e”,“l”,“l”]示例 2:输入:[“cool”,“lock”,“cook”]输出:[“c”,“o”]代码:class Solution {public: vecto.原创 2020-10-14 23:04:56 · 201 阅读 · 0 评论 -
四数之和 疯狂减枝 leetcode 18
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[-1, 0, 0, 1],[-2, -1, 1, 2],[-2, 0, 0, 2]]class .原创 2020-10-05 21:33:40 · 103 阅读 · 0 评论 -
秋叶收藏集, 动态规划 leetcode LCP 19
小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶。出于美观整齐的考虑,小扣想要将收藏集中树叶的排列调整成「红、黄、红」三部分。每部分树叶数量可以不相等,但均需大于等于 1。每次调整操作,小扣可以将一片红叶替换成黄叶或者将一片黄叶替换成红叶。请问小扣最少需要多少次调整操作才能将秋叶收藏集调整完毕。示例 1:输入:leaves = “rrryyyrryyy.原创 2020-10-04 11:47:41 · 151 阅读 · 0 评论 -
二叉树的后序遍历,迭代法用栈模拟 leetcode 145
给一个二叉树,用栈模拟递归,返回二叉树的后续遍历(postorder)。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x),原创 2020-10-04 11:27:53 · 142 阅读 · 0 评论 -
中序遍历后序遍历构造二叉树 unordered map,二叉树的两种遍历方法,构造二叉树 leetcode106
根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:3/ 9 20/ 15 7标准过程class Solution { int post_idx; unordered_map<int, int> idx_map;public: TreeNode* helper(int in_left.原创 2020-09-25 13:11:10 · 156 阅读 · 0 评论 -
二叉数的中序遍历 递归,栈 leetcode 94
给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?方法一/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left.原创 2020-09-15 22:22:19 · 149 阅读 · 0 评论 -
飞机票 dfs leetcode 332
题目给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。提示:如果存在多种有效的行程,请你按字符自然排序返回最小的行程组合。例如,行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”] 相比就更小,排序更靠前所有的机场都用三个大写字母表示(机场代码)。假定所有机票至少存在一种合理的行程。所有的机票必须都用一次原创 2020-09-10 15:59:37 · 502 阅读 · 0 评论 -
组合综合Ⅱ dfs,vector去重 leetcode40
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]]示例 2:输入: candidat.原创 2020-09-10 15:02:40 · 221 阅读 · 1 评论 -
求前k个高频元素 map leetcode 347
输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]my code#include<algorithm>class Solution { public:typedef pair<int,int> Pair;static bool my_compare( const Pair &p1, const Pair &p2){ return p1.second > p2.second;} vector<i.原创 2020-09-08 18:00:56 · 179 阅读 · 0 评论 -
学习dfs发现的bug
最近学习dfs,在输出全排列时发现一个bug 但是目前无法解释这一现象,待日后处理:void dfs(int step){ int i; if (step == 5) { printf("%d %d %d %d\n", a[1], a[2], a[3], a[4]); return; } for (i = 1; i <= 4; i++) { if (book[i]...原创 2020-03-01 09:23:55 · 214 阅读 · 1 评论 -
广度优先搜索学习
#include<stdio.h>struct note{int x;int y;int f;int s;};int main(){struct note que[2501];int a[51][51] = { 0 }, book[51][51] = { 0 };int m, n, i, j, k, tail=0, head=0, p, q, startx, s...原创 2020-03-03 22:16:08 · 231 阅读 · 0 评论 -
二叉树的层次遍历-bfs,queue-leetcode 107
题目给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]代码#include<iostream>#include<vector>#include<queue>原创 2020-09-06 20:01:47 · 293 阅读 · 0 评论 -
二叉树所有路径--leetcode257
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入:1/ 2 35输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3代码/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* .原创 2020-09-06 18:54:19 · 140 阅读 · 0 评论 -
动态规划-- leetcode预测赢家
给定一个表示分数的非负整数数组。 玩家 1 从数组任意一端拿取一个分数,随后玩家 2 继续从剩余数组任意一端拿取分数,然后玩家 1 拿,…… 。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。示例 1:输入:[1, 5, 2]输出:False解释:一开始,玩家1可以从1和2中进行选择。如果他选择 2(或者 1 ),那么玩家 2 .原创 2020-09-04 20:03:22 · 390 阅读 · 0 评论 -
力扣109 有序链表转为二叉搜索树
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/convert-sorted-list-to-binary-se原创 2020-08-18 21:09:28 · 227 阅读 · 0 评论 -
kmp算法实现字符串查找--力扣
一,图解分析首先是有母串T,和字串P。先构建一个数组B。数组B要装如和P的size一样多的数字。比如在这里我需要构建一个大小为5的int数组。根据子字符串的子串前缀开始排列。我们可以看到,从第一行到第五行,每一行,前缀后缀最长相等长度分别是,0,0,1,2,0设我们的B数组开头为-1,将以上的数组最后一位去掉,得到的B数组为 -1,0,0,1,2此时将B数组与字串对正。接下来的操作是开始匹配,发现,在字串P的位置3时,匹配失败,我们要做的是将位置1移到位置三的位置。我们会发现,这样就原创 2020-08-16 15:42:48 · 693 阅读 · 0 评论
分享