每日一题计划
文章平均质量分 55
Aaron_Yang.
大三软件工程在读,欢迎学习交流,一起进步
展开
-
HDU 1969 题解
Problem DescriptionMy birthday is coming up and traditionally I’m serving pie. Not just one pie, no, I have a number N of them, of various tastes and of various sizes. F of my friends are coming to my party and each of them gets a piece of pie. This shoul原创 2021-10-12 09:48:33 · 232 阅读 · 0 评论 -
L1-8 估值一亿的AI核心代码 (正则表达式匹配) C++
原题:以上图片来自新浪微博。本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:无论用户说什么,首先把对方说的话在一行中原样打印出来;消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;把原文中所有大写英文字母变成小写,除了 I;把原文中所有独立的 can you、could you 对应地换成 I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词;把原文中所有独立的 I 和 me 换成 you;把原创 2021-08-16 11:00:13 · 503 阅读 · 1 评论 -
LeetCode455:分发饼干(贪心)
题目:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:输入: g = [1,2,3], s = [1,1]输出: 1解释: 你有三个孩子和两块小饼干,3个孩子的胃口值分原创 2021-07-21 21:33:18 · 165 阅读 · 0 评论 -
PAT 2016:L2—013 红色警报(dfs)
题目:战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。输入格式:输入在第一行给出两个整数N(0 < N ≤ 500)和M(≤ 5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路条数。随后M行,每行给出一条通路所连接的两个城市的编号,其间以1个空格分隔。在城市信息之后给出被攻占的信原创 2021-07-20 17:05:58 · 134 阅读 · 0 评论 -
Hdu1241:Oil Deposits(DFS深搜)
题目:The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides the land into numerous square plots. It then analyzes原创 2021-07-19 20:55:01 · 127 阅读 · 0 评论 -
LeetCode572: 另一个树的子树
题目:给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例:思路:要判断一个树 t 是不是树 s 的子树,那么可以判断 t 是否和树 s 的任意子树相等。那么就转化成 LeetCode100:Same Tree。即,这个题的做法就是在 s 的每个子节点上,判断该子节点是否和 t 相等。判断两个树是否相等的三个条件是与的关系,即:当前两个树的根节点值相等;并且,s原创 2021-07-18 11:08:23 · 151 阅读 · 0 评论 -
LeetCode343: 整数拆分(动态规划超详解)
题目:给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/integer-break思路:原创 2021-07-17 09:38:56 · 259 阅读 · 0 评论 -
LeetCode63:不同路径 II(动态规划)
题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?思路:和上一题思路类似,只是多了一个障碍。因此在初始化的时候:障碍以及障碍之后(这个点之后)仍然保持初始状态(为0)。然后在递归的时候,当obstacle的值为1的时候,则退出当前递归操作,让他保持原来的初始值即可。代码:class S原创 2021-07-16 16:24:40 · 124 阅读 · 0 评论 -
LeetCode101:对称二叉树(递归法+迭代法)
题目:给定一个二叉树,检查它是否是镜像对称的。示例:(如图)方法一(递归法):思路: 首先要比较两个结点值相同与否,必须要判断这两个结点是否为空,否则会出现空指针的问题。结点为空有三种情况(两两为空:false;都为空:true)。然后剩下的就是左右结点不为空的情况,如果值不相同,就返回false;最后相同的情况,就进入递归,只要当左右都对称才返回true。代码:/** * Definition for a binary tree原创 2021-07-15 21:07:55 · 130 阅读 · 0 评论 -
LeetCode429:N 叉树的层序遍历
题目:给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。示例:提示:树的高度不会超过 1000树的节点总数在 [0, 10^4] 之间思路: 这道题依旧是模板题,只不过⼀个节点有多个孩子了代码:/*// Definition for a Node.class Node {public: int val; vector<原创 2021-07-14 20:47:56 · 233 阅读 · 0 评论 -
LeetCode102: 二叉树的层序遍历
题目:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[[3],[9,20],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal思路:原创 2021-07-13 21:17:14 · 144 阅读 · 0 评论 -
2019年天梯赛全国总决赛题集——6翻了(java版)
“666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这是 3 个 “9”!本题就请你编写程序,将那些过时的、只会用一连串“6666……6”表达仰慕的句子,翻译成最新的高级表达。输入格式:输入在一行中给出一句话,即一个非空字符串,由不超过 1000 个英文字母、数字和空格组成,以回车结束。输出格式:从左到右扫描输入的句子:如果句子中有超过原创 2021-07-11 15:10:12 · 358 阅读 · 0 评论 -
LeetCode214:最短回文串
原题链接:https://leetcode-cn.com/problems/shortest-palindrome/题目描述:解法一:暴力搜索寻找开头开始的最长回文串,将原始字符串逆序,然后比较对应的子串即可判断是否是回文串。举个例子。abbacd原s: abbacd, 长度记为 n 逆r: dcabba, 长度记为 n 判断 s[0,n) 和 r[0,n) abbacd != dcabba判断 s[0,n - 1) 和 r[1,n) abbac != cabba判断 s[0,n -原创 2021-07-10 21:35:12 · 151 阅读 · 3 评论 -
LeetCode 2. 两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0] 输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9]原创 2021-07-09 09:46:59 · 105 阅读 · 0 评论 -
LeetCode 21. 合并两个有序链表
题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100l1 和 l2 均按 非递减顺序 排列原创 2021-07-08 21:35:17 · 97 阅读 · 0 评论