分类: leetcode

10 篇文章

单调栈
通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。 739. 每日温度 维护一个栈顶到栈底递减的栈。 当栈为空,或者遍历元素小于栈顶元素,遍历元素的索引入栈 当遍历元素大于栈顶元素,说明找到了,值就是索引相减 class Solution { public: vector<int&…
动态规划【ing】
509. 斐波那契数 递归 class Solution { public: int fib(int n) { if(n
回溯
模板 void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtracking(路径,选择列表); // 递归 回溯,撤销处理结果 } } 77. 组合 基本 class Solution { private…
字符串
344. 反转字符串 class Solution { public: void reverseString(vector<char>& s) { for(int i=0,j=s.size()-1;i<s.size()/2;i++,j--) { swap(s[i],s[j]); } } }; 541. 反转字符串 II c…
贪心【ing】
455. 分发饼干 尺寸小的先给胃口小的或者尺寸大的先给胃口大的 class Solution { public: int findContentChildren(vector<int>& g, vector<int>& s) { sort(g.begin(), g.end()); sort(s.begin(…
数组
数组 参考代码随想录 704. 二分查找 左右闭合的查找 class Solution { public: int search(vector<int>& nums, int target) { int left = 0; int right = nums.size() - 1; // 定义target在左闭右闭的区间里,[le…
链表
203. 移除链表元素 设置一个虚拟头结点,不需要考虑头结点和非头结点的不同处理方式 class Solution { public: ListNode* removeElements(ListNode* head, int val) { ListNode* dummyHead = new ListNode(0); // 设置一个虚拟头结点 dum…
哈希表
题目中提到元素是否出现,考虑用哈希表进行查找。 242. 有效的字母异位词 用数组维护一个记录,t中++,s中--,最后判断数组的每一项是否为零 class Solution { public: bool isAnagram(string s, string t) { int record[26] = {0}; for(char ss : s) {…
二叉树【ing】
二叉树 参考:代码随想录 二叉树遍历 前、中、后遍历递归相似,只是根据根节点的命名前中后遍历。但是迭代遍历有点不同 例子:94. 二叉树的中序遍历 递归遍历 中序递归遍历(其他只要修改顺序即可) class Solution { public: void traversal(TreeNode* cur, vector &vec) { if(!cur…
leetcode_算法入门
Day1 二分查找 704. 二分查找 递归方法 class Solution { public: int recur(vector& nums,int start, int end, int target) { int mid = (start + end ) /2; if (mid < start || mid > end) return -1…