LeetCode
文章平均质量分 65
oooozoo
日积跬步
展开
-
LeetCode-二叉树遍历-94中序+144前序+145后序-(递归/迭代/Morris)
中序遍历:递归:class Solution {public: void midOrder(TreeNode* root,vector<int>&ans){ if(!root) return; midOrder(root->left,ans); ans.push_back(root->val); midOrder(root->right,ans); } vector<原创 2022-03-25 10:20:31 · 1312 阅读 · 0 评论 -
递归与分治test-涉及递归/分治/哈希/归并/离散化
一 金字塔题解:1.算出金字塔有多少行后,输出空格是:总行数-当前行;输出字符是:2*当前行-1我的代码↓ 缺点就是——这是分治test!!!!但是却没有分治的思想!!!QWQ#include <iostream>using namespace std;void pyramid(int i, char c){ for(int j = 1; j <= i; j++){ for(int k = 1; k <= i-j; k++)原创 2022-03-21 08:41:54 · 177 阅读 · 0 评论 -
洛谷-P1226-【模板】快速幂||取余运算-普及-分治
一 题目二 示例及提示三 题解快速幂算法的核心思想就是每一步都把指数分成两半,而相应的底数做平方运算。这样不仅能把非常大的指数给不断变小,所需要执行的循环次数也变小,而最后表示的结果却一直不会变。例如:此外, 关于取余运算的性质有:(A + B) mod b=(A mod b + B mod b) mod b(A × B) mod b=((A mod b)×(B mod b)) mod b代码:#include <iostream>usi原创 2022-03-18 09:03:44 · 692 阅读 · 0 评论 -
洛谷-P3612-Secret Cow Code S-普及- -分治
一 题目二 示例及提示三 题解一开始卡了很久,后来想明白的时候觉得自己思路都对,结果还是有超时和WA,我狠狠震惊。纠结了很久最后发现竟然是在在一些很基本的地方犯蠢了。先po一下自己的代码,这是已经AC的:#include <iostream>#include <vector>using namespace std;int main(){ string s; long long N; cin >>...原创 2022-03-17 14:31:33 · 960 阅读 · 0 评论 -
洛谷-P1885-Moo-普及--分治
一 题目二 示例及提示三 题解思路:代码:#include <iostream>#include <vector>using namespace std;void partition(vector<int>f, int N, int k){ if(k==0 || (f[k-1]<N && N<=f[k-1]+k+3)){ if(N==1 || N==f[k-1]+1){ .原创 2022-03-17 09:58:59 · 806 阅读 · 0 评论 -
洛谷-P1228-地毯填补问题-普及/提高--分治+递归
一 题目二 示例及提示三 题解思路:当k=1时,我们可以非常容易得到毯子填补的方案。当k=2甚至更大时,我们可以将其划分为四大块,但是公主位只有一个,而对于其他没有公主位的四方格,似乎和原问题形式不一样。但是我们可以对其加以处理,使其四个子问题都具有相同形式——即,我们可以手动为其他三个没有公主位的四方格增加新的“公主位”。例如,当公主位在左上角时,我们可以将剩余三个四方格的交界处用毯子1来补上,这样每个四方格都会被分配到一个公主位,称为特殊的方阵,问题便迎刃而解。因此我们就可以原创 2022-03-16 16:11:48 · 1492 阅读 · 0 评论 -
洛谷-P1024-一元三次方程求解-普及-暴力/盛金公式/分治
一 题目与示例二 题解1.暴力求解骗分法:D#include <iostream>#include <cmath>#include <iomanip> using namespace std;int main(){ double a,b,c,d; int cnt = 0; cin >> a >> b >> c >> d; for(double i = -100;原创 2022-03-15 23:55:31 · 1046 阅读 · 0 评论 -
洛谷-P1010-幂次方-普及(摁写+递归/二进制+递归)
一 题目描述二 示例及提示输入格式一行一个正整数 n。输出格式符合约定的 n的 0,2 表示(在表示中不能有空格)。输入输出样例输入 #11315输出 #12(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)三 题解1.直接按题意递归处理思路:代码:#include <iostream>#include <cmath>using namespace std.原创 2022-03-15 16:11:02 · 1737 阅读 · 0 评论 -
LeetCode-169-多数元素-简单(排序/摩尔投票法/哈希表/随机数/位运算)
一 题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。二 示例及提示示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2进阶: 尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。三 题解1 排序思路:既然要过半就说明数组排序后,位于最中间的数一定是符合要求的数。很直接...原创 2022-03-14 11:58:25 · 7883 阅读 · 0 评论 -
LeetCode-347-前k个高频元素-中等(红黑树/堆/快排)
一 题目给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。二 前言像这种topK问题(前k小/前k大/第k大/第k小)的题解都是套路,基本就是堆排序O(nlogk)、快速选择O(n)【最快】、二叉搜索树O(nlogk)。本题只是在这基础上的变形而已,要处理值和频率对应的问题,所以考虑以哈希表为底层的unordered_map来处理,然后在后面排序的过程中需要注意数据结构的变化。三 题解1.两个红黑树反着赋值。思路:考虑到原创 2022-03-11 23:23:43 · 1272 阅读 · 0 评论 -
LeetCode-654-最大二叉树-中等(递归/单调栈)
一 题目给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。返回 nums 构建的 最大二叉树 。二 示例及提示示例 1:输入:nums = [3,2,1,6,0,5]输出:[6,3,5,null,2,0,null,null,1]解释:递归调用如下所示:-...原创 2022-03-10 15:40:52 · 1036 阅读 · 0 评论 -
LeetCode-1-Two Sum-简单-暴力/哈希
暴力写法自己写的↓: 也可以直接return {i,j};class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int>ans; for(int i = 0; i < nums.size(); i++){ for(int j = i+1; j < nums.size();原创 2022-03-10 10:07:06 · 375 阅读 · 0 评论 -
LeetCode-七进制数、最小高度二叉搜索树
只是为了记录每天的练习(要好好加油啊呜呜呜现在的我还太拉了思路很直接啊……就是转进制+数字转字符串。class Solution {public: string convertToBase7(int num) { if(num == 0) //特殊情况 return "0"; const int system = 7;//使其普遍适用于n进制 bool flag;//记录num的正负性 flag原创 2022-03-07 14:21:28 · 6914 阅读 · 0 评论 -
LeetCode-剑指Offer40-最小的k个数-简单(排序/堆/快速选择)
一 题目输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。二 示例及提示示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]限制: 0 <= k <= arr.length <= 10000 0 <= arr[i] <= 10000...原创 2022-03-06 16:39:19 · 454 阅读 · 0 评论 -
LeetCode-53-最大子数组和-简单(贪心/分治/暴力求解/动态规划)
一 题目给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。二 示例及提示示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [5,4,-1,7,8]输出:23提示: 1 <= nums.lengt...原创 2022-03-05 21:21:36 · 950 阅读 · 0 评论