首页 > TAG信息列表 > 墨鳌

【墨鳌】【数论小结 01】【乘法逆元】【扩展欧几里得】

数论小结 1. 扩展欧几里得 首先,根据辗转相除法,不难有: \[\gcd(a,b)=\gcd(b,a\%b) \]关于扩展欧几里得算法,是解决线性方程:\(ax+by=c\) 当且仅当,\(\gcd(a,b)|c\) 有解 又因为,\(x,y\in\Z\),所以问题可以转化为,解线性方程:\(ax+by=\gcd(a,b)\) 这就是扩展欧几里得算法的初始条件 假设,我们

【墨鳌】【数据结构】【AVL树】

AVL Tree 在 Binary Search Tree 现有属性之上,依赖于可以其二分查找的特性,进行树高的调整优化 在每个节点多维护一个子树高度(height)的信息 每次 insert/remove 时,按照限制条件,动态旋转,以满足任意节点的平衡因子的绝对值 \(<=1\) 节点属性 key - 可以比较的对象类型 left,right -

【墨鳌】

class Solution { public: int bestRotation(vector<int>& A) { int N = A.size(); vector<int> mark(N, 0); for (int i = 0; i < N; ++i) { int L = (i + 1) % N; // 得分区间入口 int R = (N + i + 1 -

【墨鳌】【面试题19. 正则表达式匹配】

class Solution { public: bool isMatch(string s, string p) { int m = s.size(); int n = p.size(); auto matches = [&](int i, int j) { if (i == 0) { return false; } if (p[j -

【墨鳌】【234.回文链表】

解题思路 精彩 O(1) class Solution { public: bool isPalindrome(ListNode* head) { if (head == nullptr) { return true; } ListNode* firstHalfEnd = endOfFirstHalf(head); ListNode* secondHalfStart = reverse

【墨鳌】【简单题~鸡兔同笼】【或者冒泡排序】

题目链接 题解链接 方法一:冒泡排序 思路,略 复杂度 空间复杂度: \(O(1)\) 时间复杂度: \(O(N^2)\) 代码 class Solution { public: void sortColors(vector<int>& nums) { for(auto x=begin(nums);x!=end(nums);x++) for(auto y=x+1;y!=end(nums);y++)

【墨鳌】【单调栈~后序遍历】

题目链接 题解链接 解题思路 单调栈 后序遍历 代码 // 自后向前,维护一个单调递减的栈,成功返回true class Solution { public: bool verifyPostorder(vector<int>& postorder) { stack<int>s; int top=INT_MAX; for(auto p=rbegin(postorder);p!=ren

【墨鳌】【经典问题】【约瑟夫环~记忆化搜索】

题目链接 题解链接 解题思路 经典约瑟夫环 plus 经典记忆化搜索技巧 \(f(n,m)=\begin{cases}0 & (n=0)\\ [f(n-1,m)+m]\%n&(n>0)\end{cases}\) 代码 class Solution { public: struct pair_hash { inline size_t operator()(const pair<int,int>&p)const{

【墨鳌】【简单题,但是要细致一点,别忘了关灯的时候把自己也关了

题目链接 题解链接 题外话 无意间在评论区发现了原来是 125周赛题 所以晚上补充一下,他山之石,可以攻玉, @bigelephant29 解题思路 每一个灯(坐标),有五个属性: 行 (横坐标 x ) 列 (纵坐标 y ) 撇 (直线 y=x+t \(\Longrightarrow\) 记录 x-y ) 捺 (直线 x+y=t \(\Longrightarrow\)