07 2024 档案
摘要:排序 1.冒泡排序 void bubblesort1(int* arr, unsigned int len) { //长度小于2就不用排序了 if (len < 2) return; for (int i = 0; i < len - 1; i++) { for (int j = 0; j < le
阅读全文
摘要:题目链接:https://leetcode.cn/problems/validate-binary-search-tree/description/ 题目叙述: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。
阅读全文
摘要:题目链接:https://leetcode.cn/problems/merge-two-binary-trees/description/ 题目叙述: 给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这
阅读全文
摘要:题目链接:https://leetcode.cn/problems/minimum-absolute-difference-in-bst/description/ 题目叙述: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝
阅读全文
摘要:题目链接:https://leetcode.cn/problems/maximum-binary-tree/description/ 题目叙述 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大
阅读全文
摘要:题目链接:https://leetcode.cn/problems/search-in-a-binary-search-tree/description/ 题目叙述: 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节
阅读全文
摘要:题目链接:https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/description/ 题目叙述: 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换
阅读全文
摘要:题目链接:https://leetcode.cn/problems/count-complete-tree-nodes/description/ 题目叙述 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节
阅读全文
摘要:题目链接:- P1098 [NOIP2007 提高组] 字符串的展开 题目叙述: [NOIP2007 提高组] 字符串的展开 题目描述 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于 d-h 或者 4-8 的字串,我们就把它当作一种简写,输
阅读全文
摘要:题目链接:- P1067 [NOIP2009 普及组] 多项式输出 题目叙述: [NOIP2009 普及组] 多项式输出 题目描述 一元 n 次多项式可用如下的表达式表示: 多项式中自变量为 x,从左到右按照次数递减顺序给出多项式。 多项式中只包含系数不为 0 的项。 如果多项式 n 次项系数为正,
阅读全文
摘要:题目链接:- P1042 [NOIP2003 普及组] 乒乓球 [NOIP2003 普及组] 乒乓球 题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中 11 分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,
阅读全文
摘要:题目链接:链接: 题目叙述: [GESP样题 四级] 填幻方 题目描述 在一个 N×N 的正方形网格中,每个格子分别填上从 1 到 N×N 的正整数,使得正方形中任一行、任一列及对角线的几个数之和都相等,则这种正方形图案就称为“幻方”(输出样例中展示了一个 3×3 的幻方)。我国古代称为“河图”、“
阅读全文
摘要:题目链接 题目叙述: n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。 示例 1: 输入
阅读全文
摘要:题目链接:https://leetcode.cn/problems/find-bottom-left-tree-value/description/ 题目叙述: 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: roo
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/description/875/ 题目叙述: 给定 n个正整数 ai,请你求出每个数的欧拉函数。 欧拉函数的定义:1∼N中与 N互质的数的个数被称为欧拉函数,记为 ϕ(N)。 输入格式 第一行包含整数 n。接下来
阅读全文
摘要:题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/ 题目叙述: 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/
阅读全文
摘要:题目链接:https://leetcode.cn/problems/maximum-subarray/description/ 题目叙述: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 示例 1: 输入:n
阅读全文
摘要:题目链接:https://leetcode.cn/problems/lemonade-change/description/ 题目叙述: 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元
阅读全文
摘要:LeetCode题目链接:https://leetcode.cn/problems/assign-cookies/description/ 题目叙述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃
阅读全文
摘要:LeetCode题目链接:https://leetcode.cn/problems/invert-binary-tree/ 题目叙述: 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例
阅读全文
摘要:题目叙述: 输入格式 第一行包含整数 n。 接下来 n行,每行包含一组 a和 b。 输出格式 共n行,每行输出一个询问的解。 数据范围 1≤n≤10000,1≤b≤a≤2000 输入样例: 3 3 1 5 3 2 2 输出样例: 3 10 1 思路讲解: 看数据范围——a,b均在2000以内,就算挨
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/description/873/ 题目叙述: 给定 n个正整数 ai,请你输出这些数的乘积的约数之和,答案对 10^9+7取模。 输入格式 第一行包含整数 n。接下来 n行,每行包含一个整数 ai。 输出格式 输
阅读全文
摘要:题目叙述: 题目链接:https://www.acwing.com/video/295/ 给定 n个正整数 ai,请你输出这些数的乘积的约数个数,答案对 1e9 + 7取模。 输入格式 第一行包含整数 n。 接下来 n行,每行包含一个整数 ai。 输出格式 输出一个整数,表示所给正整数的乘积的约数个
阅读全文
摘要:题目叙述 给定 n个正整数 ai,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。 输入格式 第一行包含整数 n。 接下来 n行,每行包含一个正整数 ai。 输出格式 对于每个正整数 ai,按照从小到大的顺序输出其分解质因数后,每个质因数的底数和指数,每个底数和指数占一行。
阅读全文
摘要:题目叙述: 给定 n 对正整数 ai,bi,请你求出每对数的最大公约数。 输入格式: 第一行包含整数 n 接下来 n行,每行包含一个整数对 ai,bi。 输出格式: 输出共 n行,每行输出一个整数对的最大公约数。 数据范围 1≤n≤105,1≤ai,bi≤2×109 输入样例: 2 3 6 4 6
阅读全文
摘要:辗转相除法 辗转相除法(也称欧几里德算法)是一种用于计算两个整数的最大公约数(Greatest Common Divisor, GCD)的有效方法。其原理基于以下性质:若 ( a >=b ),则 gcd(a,b)=gcd(b,a mod b)。这意味着可以通过反复将较大数替换为它与较小数的余数来求得
阅读全文
摘要:试除法判断质数 试除法的思想 试除法是一种简单且直观的方法,用来判断一个数是否为质数。它的基本思想是:对于待判断的数 ( n ),从小到大地试除每个小于 ( n ) 的数 ( i ),如果 ( n ) 能被任何 ( i ) 整除且 () 和 (),则 ( n ) 不是质数;否则,( n ) 是质数。
阅读全文
摘要:LeetCode题目链接:https://leetcode.cn/problems/implement-stack-using-queues/description/ 题目叙述: 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty
阅读全文
摘要:【模板】线性筛素数 题目背景 本题已更新,从判断素数改为了查询第 k 小的素数 提示:如果你使用 cin 来读入,建议使用 std::ios::sync_with_stdio(0) 来加速。 题目描述 如题,给定一个范围 n,有 q 个询问,每次输出第 k 小的素数。 输入格式 第一行包含两个正整数
阅读全文
摘要:LeetCode题目链接:https://leetcode.cn/problems/binary-tree-right-side-view/description/ 题目叙述: 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1:
阅读全文
摘要:LeetCode题目链接:https://leetcode.cn/problems/average-of-levels-in-binary-tree/description/ 题目叙述: 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。 思路 这题我们依然是采用层序遍历,其实和二叉树的层序
阅读全文
摘要:[NOIP2001 普及组] 最大公约数和最小公倍数问题 题目描述 洛谷题目链接:https://www.luogu.com.cn/problem/P1029 输入两个正整数 x, y,求出满足下列条件的 P, Q的个数: P,Q 是正整数。 要求 P, Q 以x 为最大公约数,以 y 为最小公倍数
阅读全文
摘要:LeetCode题目链接:https://leetcode.cn/problems/binary-tree-level-order-traversal/submissions/548489149/ 题目叙述: 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)
阅读全文
摘要:[NOIP2015 普及组] 金币 题目背景 NOIP2015 普及组 T1 题目描述 国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这
阅读全文
摘要:力扣题目链接:https://leetcode.cn/problems/binary-tree-level-order-traversal/ 题目叙述: 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 步骤: 其实,这道题和二叉树的层序遍
阅读全文
摘要:拿到这道题,我们想一下,我们将整个字符串都反转过来,那么单词的顺序指定是倒序了,只不过单词本身也倒序了,那么再把单词反转一下,单词不就正过来了。 所以解题思路如下: 移除多余空格 将整个字符串反转 将每个单词反转 举个例子,源字符串为:"the sky is blue " 移除多余空格 : "the
阅读全文
摘要:[NOIP2008 提高组] 笨小猴 题目描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次
阅读全文
摘要:约数(Divisors) 约数是指能整除某个整数的其他整数。例如,对于整数 ( a ),如果存在整数 ( b ) 使得 ( a = b*c ),那么 ( b ) 就是 ( a ) 的约数。 性质: 1 和自身是每个整数的约数: 每个整数 ( a ) 都有至少两个约数:1 和 ( a ) 本身。 约数
阅读全文
摘要:std::ios::sync_with_stdio(0) 是一个 C++ 中的流控制函数,用于调整 C++ 标准输入输出流与 C 标准输入输出流的同步设置。 具体来说: 默认情况下,C++ 的输入输出流与 C 的输入输出流是独立的,即它们各自有自己的缓冲区,互相不干扰。这意味着,如果你使用了 C++
阅读全文
摘要:进制转换 洛谷题目链接:https://www.luogu.com.cn/problem/P1143#submit 题目描述 请你编一程序实现两种不同进制之间的数据转换。 输入格式 共三行,第一行是一个正整数,表示需要转换的数的进制 n(2<=n<=16),第二行是一个 n 进制数,若 n>10 则
阅读全文
摘要:高低位交换 洛谷题目链接:https://www.luogu.com.cn/problem/P1100 题目描述 给出一个小于 2^32 的非负整数。这个数可以用一个 32 位的二进制数表示(不足 32 位用 0 补足)。我们称这个二进制数的前 16 位为“高位”,后 16 位为“低位”。将它的高低
阅读全文
摘要:力扣题目链接:https://leetcode.cn/problems/single-number-iii/description/ 题目叙述: 给你一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 你必须设计
阅读全文
摘要:力扣链接:https://leetcode.cn/problems/single-number/description/ 题目叙述 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题
阅读全文
摘要:当我们谈论位运算时,通常是指在计算机中直接操作二进制位的运算。位运算主要包括位与(&)、位或(|)、位异或(^)、位取反(~)以及左移(<<)和右移(>>)操作。 1. 位与(&) 位与运算符用符号 & 表示,它的规则是对两个操作数的每一位执行逻辑与操作,只有两个操作数对应位都为 1 时,结果位才为
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/B3849 [GESP样题 三级] 进制转换 题目描述 小美刚刚学习了十六进制,她觉得很有趣,想到是不是还有更大的进制呢?在十六进制中,用 A 表示 10、F 表示 15。如果扩展到用 Z 表示 35,岂不是可以表示 36
阅读全文
摘要:[NOIP2016 提高组] 玩具谜题 题目背景 NOIP2016 提高组 D1T1 题目描述 小南有一套可爱的玩具小人,它们各有不同的职业。 有一天,这些玩具小人把小南的眼镜藏了起来。小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。如下图: 这时 singer 告诉小南一个谜题:“
阅读全文
摘要:力扣题目链接:https://leetcode.cn/problems/minimum-depth-of-binary-tree/ 题目叙述: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 输入:root = [3,
阅读全文
摘要:力扣链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 题目叙述: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9
阅读全文
摘要:力扣题目链接:https://leetcode.cn/problems/find-largest-value-in-each-tree-row/description/ 题目叙述: 您需要在二叉树的每一行中找到最大的值。 思路 这题依旧是采用层序遍历的模板,只不过我们不需要设置current数组,并
阅读全文
摘要:矩阵旋转是一种常见的操作,通常包括将矩阵顺时针或逆时针旋转90度、180度或270度等。这里我将简要介绍如何进行顺时针旋转90度的操作,并给出示例代码。 顺时针旋转90度的方法: 要顺时针旋转一个n x n的矩阵,可以采用以下步骤: 转置矩阵:先将矩阵转置,即行变成列,列变成行。 反转每一行:然后反
阅读全文
摘要:[NOIP2015 普及组] 扫雷游戏 题目背景 NOIP2015 普及组 T2 题目描述 扫雷游戏是一款十分经典的单机小游戏。在 n 行 m 列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地
阅读全文
摘要:一般情况下,printf 和 scanf 函数在速度上可能会比 cout 和 cin 快,尤其是在大量数据输出和输入的情况下。这里有几个原因可以解释为什么如此: 缓冲区处理: printf 和 scanf 是基于 C 标准 I/O 库,它们通常会使用缓冲区来优化输出和输入操作。一次性将数据写入或读取
阅读全文
摘要:当然可以。sprintf 函数和 sscanf 函数是 C 语言中非常实用的两个函数,它们主要用于字符串的格式化输入输出,但是方式有些不同。下面我会尽量用通俗的语言来解释它们。 sprintf 函数 sprintf 函数的名字可以理解为“string print format”,意思是“按照格式打印
阅读全文
摘要:nth_element 是 C++ STL 中非常强大的算法之一,用于在一个范围内找到第 k 小(或第 k 大)的元素,并将其放到正确的位置,使得所有小于或等于该元素的值在其左边,所有大于该元素的值在其右边。这个算法的关键特点是它在找到第 k 小的元素时,复杂度为 O(n),比起全排序的 O(n l
阅读全文
摘要:爱与愁的心痛 题目背景 (本道题目隐藏了两首歌名,找找看哪~~~) 《爱与愁的故事第一弹·heartache》第一章。 《我为歌狂》当中伍思凯神曲《舞月光》居然没赢给萨顶顶,爱与愁大神心痛啊~~~而且最近还有一些令人伤心的事情,都让人心痛(最近真的很烦哈)…… 题目描述 最近有 n 个不爽的事,每句
阅读全文
摘要:在 C++ 中,为形参加上 const 修饰符主要是为了提高代码的安全性、清晰性和性能。即使你不会在函数中改变某个形参的值,加上 const 修饰符仍然有几个重要的好处: 1. 保护数据不被修改 将形参声明为 const 表示该函数承诺不会修改该参数的值。这种承诺是对调用者的一种保障,表明函数在处理
阅读全文
摘要:在 C++ 中,传递对象的引用而不是对象本身通常被视为一种最佳实践,特别是在处理较大的对象或复杂类时。这个做法有几个重要的理由和优点: 1. 性能优化 避免拷贝开销: 传递对象的副本可能会带来较大的性能开销,尤其是当对象很大或包含大量数据时。每次传递对象时都需要创建一个对象的副本,这会消耗额外的内存
阅读全文
摘要:在 C++ 中,“常对象”指的是一个在其生命周期中无法被修改的对象。也就是说,对常对象的任何修改操作都会被编译器禁止。这种对象被称为常量对象(const 对象)。 常对象的定义 常对象是在定义对象时使用 const 关键字修饰的。比如: const int x = 10; // x 是一个常对象 在
阅读全文
摘要:快速幂算法的代码: //快速幂算法: long long fast_power(long long a, long long b, long long c) { long long result = 1; a %= c; while (b != 0) { if (b % 2 == 1) { resu
阅读全文
摘要:sort排序规则 要理解为什么使用 std::abs(a) > std::abs(b) 进行排序会导致绝对值降序排列,我们需要深入理解排序算法的比较规则以及如何使用这些规则来实现特定的排序需求。 排序算法中的比较规则 std::sort 使用的是一种排序算法,它根据比较函数的返回值来决定元素的相对顺
阅读全文
摘要:[GESP202306 三级] 密码合规 题目链接:https://www.luogu.com.cn/problem/B3843 题目描述 网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。合规的密码应满足以下要求:。 1.只能由a-z之间26个小写字母, A-Z之间26个大写字母、0
阅读全文
摘要:[COCI2017-2018#6] Davor 题面翻译 在征服南极之后,Davor 开始了一项新的挑战。下一步是在西伯利亚、格林兰、挪威的北极圈远征。他将在 2018 年 12月 31 日开始出发,在这之前需要一共筹集 n 元钱。他打算在每个星期一筹集 x 元,星期二筹集 x+k 元,……,星期日
阅读全文
摘要:[NOIP2011 普及组] 数字反转 题目描述 给定一个整数 N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。 输入格式 一个整数 N。 输出格式 一个整数,表示反转后的新数。 样例 #1 样例输
阅读全文
摘要:【深基4.例6】数字直角三角形 题目描述 给出 n,请输出一个直角边长度是 n 的数字直角三角形。所有数字都是 2 位组成的,如果没有 2 位则加上前导 0。 输入格式 输入一个正整数 n。 输出格式 输出如题目要求的数字直角三角形。 样例 #1 样例输入 #1 5 样例输出 #1 01020304
阅读全文
摘要:拿到这道题,我们其实就有直接暴力求解的方法: 使用两个字符串s,team分别表示彗星的字符串,队伍的字符串 然后再使用一个Counts数组,分别储存A-Z字符的对应的数字大小,例如A对应1,Z对应26.如此一来,我们只需要让数组每个元素的值等于下标的值+1,就可以成功初始化这个数组了 下一步就是定义
阅读全文
摘要:这道题其实我们有非常直接的思路,直接用二维数组存储每个人的语文,数学,英语成绩。 用一个一维数组来存储每个人的总分成绩。 然后再依次遍历这个二维数组(两层循环),判断某一个人的成绩和谁旗鼓相当,并使用count变量存储这个值。 还有一点:题目中描述:第一个输入数据的人的编号记为1,故而我们下标从1开
阅读全文
摘要:思路: 这道题我的想法非常简单,就是暴力遍历,定义一个大小为10000的数组 因为这道题中的马路长度L的最大值仅仅为10000,挨个遍历最坏的情况也就是遍历1遍大小为1000的数组,故而影响不大 先将数组中的元素全部初始化为1,然后在每行输入u,v时,从u到v遍历数组,让数组中的值,从flag[u]
阅读全文
摘要:这道题其实本质上就是一个偏移量的数学问题,只要计算出字母与'a'之间的偏移量,问题就迎刃而解了。 我们可以计算出每个字母与'a'之间的偏移量,然后再+n,就是这个字母移动的距离,由于移动的距离可能会>26,超过字母z的范围,因此我们对这个结果取26的余数,这样我们就可以控制在0-25之间了。 具体代
阅读全文
摘要:这道题乍一看逻辑判断条件十分复杂,但是我们有简便的方法,规避复杂逻辑情况的判断 我们可以通过一个bool类型的值来存储当前逻辑判断的条件,然后对这些bool类型的值进行逻辑与和逻辑或操作,就可以规避复杂判断逻辑的操作。 具体实现代码如下: // 判断性质1:是偶数 bool isEven = (x
阅读全文
摘要:题目叙述: 【深基2.例12】上学迟到 题目描述 学校和 yyy 的家之间的距离为 s 米,而 yyy 以 v 米每分钟的速度匀速走向学校。 在上学的路上,yyy 还要额外花费 10 分钟的时间进行垃圾分类。 学校要求必须在上午 8.00 到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。
阅读全文
摘要:这道题乍一看情况非常多种,逻辑判断似乎十分复杂,但是其实我们分类清晰的话,问题就可以迎刃而解。 我们仔细思考一下,出现boy的次数应该怎么计算?其实无非就是三种情况(从大方向上判断) 1.b开头的情况 b,bo,boy;这三种情况。 2.o开头的情况 o,oy,这两种情况(但是不能包含boy这种情况
阅读全文