草庐IT

leetcode题解

全部标签

P2730 [USACO3.2] 魔板 Magic Squares 题解

一些废话夜深人静的夜晚,我开了这道题。看起来,完成它是一件轻而易举的事。我想了想,打开Dev-C++,开始写代码。然而,那时的我还不知道,我踏入了深渊......咳咳,中二病犯了,前面的文字请忽略。思路题目要求最少操作次数,显然,我们要使用BFS来求解。对于每个节点,接下来有最多三个子节点,用函数模拟即可。因为要求输出操作序列,所以需要存储每个节点的父节点。细节我们还需要对魔板进行去重操作来剪枝。这是因为:由于BFS的特性,当一个魔板第一次出现时,得到它所需要的操作次数是最少的;如果它出现了多次,那么与首次出现相比,它所需的操作次数更多。从该魔板出发还原成目标魔板时,如果从第一个魔板出发,所用

算法leetcode|68. 文本左右对齐(rust重拳出击)

文章目录68.文本左右对齐:样例1:样例2:样例3:提示:分析:题解:rust:go:c++:python:java:68.文本左右对齐:给定一个单词数组words和一个长度maxWidth,重新排版单词,使其成为每行恰好有maxWidth个字符,且左右两端对齐的文本。你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格''填充,使得每行恰好有maxWidth个字符。要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。文本的最后一行应为左对齐,且单词之间不插入额外的空格。注意:单词是指由非空格字符

Leetcode 704. 二分查找(Binary Search)

题目链接给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中且下标为4示例2:输入:nums=[-1,0,3,5,9,12],target=2输出:-1解释:2不存在nums中因此返回-1提示:你可以假设nums中的所有元素是不重复的。n将在[1,10000]之间。nums的每个元素都将在[-9999,9999]之间。思路这道题目的前提是数组为有序数组,且数组中没有重复元素,因为一旦有重复元素,

LeetCode:20. 有效的括号——栈和队列

🍎道阻且长,行则将至。🍓🌻算法,不如说它是一种思考方式🍀算法专栏:👉🏻123一、🌱20.有效的括号题目描述:给定一个只包括‘(’,‘)’,‘{’,‘}’,‘[’,‘]’的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。来源:力扣(LeetCode)难度:简单提示:1s仅由括号‘()[]{}’组成示例1:输入:s=“()”输出:true示例2:输入:s=“()[]{}”输出:true示例3:输入:s=“(]”输出:false🌴解题题目要求判断字符串是不是合法括号组合,也就是找到一个左括号,还要

LeetCode:20. 有效的括号——栈和队列

🍎道阻且长,行则将至。🍓🌻算法,不如说它是一种思考方式🍀算法专栏:👉🏻123一、🌱20.有效的括号题目描述:给定一个只包括‘(’,‘)’,‘{’,‘}’,‘[’,‘]’的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。来源:力扣(LeetCode)难度:简单提示:1s仅由括号‘()[]{}’组成示例1:输入:s=“()”输出:true示例2:输入:s=“()[]{}”输出:true示例3:输入:s=“(]”输出:false🌴解题题目要求判断字符串是不是合法括号组合,也就是找到一个左括号,还要

leetcode 542. 01 矩阵

给定一个由0和1组成的矩阵mat,请输出一个大小相同的矩阵,其中每一个格子是mat中对应位置元素到最近的0的距离。两个相邻元素间的距离为1。示例1:输入:mat=[[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0,0],[0,1,0],[0,0,0]]示例2:输入:mat=[[0,0,0],[0,1,0],[1,1,1]]输出:[[0,0,0],[0,1,0],[1,2,1]]提示:m==mat.lengthn==mat[i].length11mat[i][j]iseither0or1.mat中至少有一个0思路:可以采用广度遍历的方式来做,先把所有为0的元素进队列,然后依次计算

牛客网输入输出练习c++ 个人版题解

目录原题链接1.计算a+ba+ba+b,任意组数据任意结尾2.计算a+ba+ba+b,指定组数据3.计算a+ba+ba+b,任意组数据以00结尾4.计算行数据和,每行数据总数已知,总行数未知但以0结尾5.计算行数据和,每行数据总数已知,总行数已知6.计算行数据和,每行数据总数已知,总行数未知且任意结尾7.计算行数据和,每行数据总数未知,总行数未知且任意结尾8.字符串排序,已知字符串数量9.字符串排序,未知字符串数量,多组数据10.字符串排序,未知字符串数量,每个字符串以逗号分隔11.计算a+ba+ba+b,但有坑原题链接https://ac.nowcoder.com/acm/contest/5

2022 CSP-J 复赛题解

第一题乘方【题目描述】小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数a和b,求ab的值是多少。ab即b个a相乘的值,例如23即为3个2相乘,结果为2×2×2=8。“简单!”小文心想,同时很快就写出了一份程序,可是测试时却出现了错误。小文很快意识到,她的程序里的变量都是int类型的。在大多数机器上,int类型能表示的最大数为231−1,因此只要计算结果超过这个数,她的程序就会出现错误。由于小文刚刚学会编程,她担心使用int计算会出现问题。因此她希望你在ab的值超过109时,输出一个‐1进行警示,否则就输出正确的ab的值。然而小文还是不知道怎么实现这份程序,因此她想请你帮忙。 

洛谷 P3304 [SDOI2013] 直径 题解

洛谷P3304[SDOI2013]直径题解题目链接题目分析第一部分好说,求直径,dfs或者DP都可以。第二部分,有一个定理,就是所有直径中点重叠。那么有两种情况一种是中点在一个节点上,那么显然这个点是每条直径的终点,也就是说直径的一半相等。从这个点出发dfs,找出所有最远点。如果只有两条,输出depth之和。否则求lca,lca的depth就是重叠的数量。另一种,中点在一条边上。从这个边出发,两侧分别dfs找最远,再分类讨论,有的求lca,有的输出。具体见代码即可。题解中还有其他思路:比如从一条直径上开始dfs(利用直径同侧长度一定相等的性质),还有两次dp求出总cnt和边cnt进行统计的,还

leetcode 965.单值二叉树

⭐️题目描述🌟leetcode链接:单值二叉树思路:让当前的根节点与左孩子节点与右孩子节点判断,若相等则继续向下分治,让左孩子与右孩子当作新的根节点继续判断,直到某个节点不相等。1️⃣代码:/*思路:让当前的根节点与左孩子节点与右孩子节点判断,若相等则继续向下分治让左孩子与右孩子当作新的根节点继续判断,直到某个节点不相等。*/boolisUnivalTree(structTreeNode*root){//如果是空节点返回true空节点不影响if(root==NULL){returntrue;}//判断左右节点与根节点的值是否相同(这里要判断不相同因为相同说明不了就是单值二叉树,//而不相同则可