
leetcode
刷一刷leetcode的题目
陵游gentian
这个作者很懒,什么都没留下…
展开
-
leetcode专项 动态规划入门
刷一下leetcode的动态规划专项,本篇博客为入门专项。原创 2022-07-15 11:03:46 · 428 阅读 · 0 评论 -
leetcode 35. 搜索插入位置
35. 搜索插入位置思路分析:二分模版题。AC代码:class Solution {public: int searchInsert(vector<int>& nums, int target) { if(nums.size() == 1) { if(nums[0] < target) return 1; else return 0; } int l = 0, r =原创 2022-01-13 22:17:48 · 134 阅读 · 0 评论 -
leetcode 278. 第一个错误的版本
278. 第一个错误的版本思路分析:二分查找模版啦!AC代码:class Solution {public: int firstBadVersion(int n) { int l = 1, r = n; while(l < r) { int mid = (long long)l + r >> 1; if(isBadVersion(mid)) r = mid; else原创 2022-01-13 22:07:30 · 121 阅读 · 0 评论 -
leetcode 704. 二分查找
704. 二分查找思路分析:板子题。背下来。理解。AC代码:class Solution {public: int search(vector<int>& nums, int target) { int l = 0, r = nums.size() - 1; while(l < r) { int mid = (l + r) >> 1; if(nums[mid] >=原创 2022-01-13 21:57:40 · 145 阅读 · 0 评论 -
leetcode 1月13日每日一题 747. 至少是其他数字两倍的最大数
747. 至少是其他数字两倍的最大数菜题,我觉得应该不会有人看这篇博客。AC代码:class Solution {public: int dominantIndex(vector<int>& nums) { int n = nums.size(); if(n == 1) return 0; int max = 0; int res; for(int i = 0; i原创 2022-01-13 11:42:29 · 189 阅读 · 0 评论 -
leetcode 300. 最长递增子序列
300. 最长递增子序列思路分析:维护一个数组v,这个数组中的v[i]表示最长子序列长度为 i+1 的子序列最后一位的最小值,并不断进行更新,如果当前数 num > v[i],则v[i + 1] = num边界情况1:如果当前数比该数组最大的还要大,那么长度就该更新啦,要新增边界情况2:如果当前数比该数组最小的还要小,那么长度不变,更新最小值AC代码:int lengthOfLIS(vector<int>& nums) { vector<int> q;原创 2022-01-12 22:13:05 · 167 阅读 · 0 评论 -
leetcode 1月12日每日一题 334. 递增的三元子序列
334. 递增的三元子序列思路分析:求最长上升子序列的简化版,维护一个长度为2的数组即可,因为题干中求解的长度是大于等于3,返回true,通过枚举即可,不需要像最长上升子序列一样每次都进行二分查找AC代码:class Solution {public: bool increasingTriplet(vector<int>& nums) { // 最长上升子序列变体,维护一个长度为2的数组即可 // 具体思路可以参考 300. 最长递增子原创 2022-01-12 22:01:22 · 178 阅读 · 0 评论 -
leetcode 1月10日每日一题 306. 累加数
306. 累加数思路分析:枚举第一个数和第二个数,高精度加法算出第三个数,然后进行比较AC代码:// C++class Solution {public: // 高精度加法板子 string add(string x, string y) { vector<int> A, B, C; { vector<int> v; v.push_back(releaseTimes[0]); for(int i = 1; i < releaseTi原创 2022-01-09 23:22:02 · 220 阅读 · 0 评论 -
leetcode 28. 实现 strStr()
leetcode 28. 实现 strStr()思路分析:暴力枚举(BF算法)KMP字符串匹配算法手写KMP。。。。AC代码:BF算法class Solution {public: int strStr(string haystack, string needle) { // 暴力枚举 if(needle.length() == 0) return 0; int ans = -1; f原创 2021-04-20 19:01:19 · 114 阅读 · 0 评论 -
leetcode 26. 删除有序数组中的重复项
leetcode 26. 删除有序数组中的重复项思路分析:双指针AC代码:class Solution {public: int removeDuplicates(vector<int>& nums) { if(nums.size() == 0) return 0; int k = 1; for(int i = 1;i < nums.size();i++)原创 2021-04-19 22:42:19 · 95 阅读 · 0 评论 -
leetcode 27.移除元素
leetcode 27.移除元素思路分析:双指针AC代码:class Solution {public: int removeElement(vector<int>& nums, int val) { // 双指针 k 用于存放新数组 i 用于遍历原数组 int k = 0; for(int i = 0;i < nums.size();i++) if(nums[i] != va原创 2021-04-19 22:23:23 · 111 阅读 · 0 评论 -
leetcode 781.森林中的兔子
leetcode 781.森林中的兔子思路分析:有点脑筋急转弯那味儿了AC代码:class Solution {public: int numRabbits(vector<int>& answers) { unordered_map<int,int> cnt; for(auto x:answers) cnt[x]++; int res = 0; for(auto [k原创 2021-04-16 20:52:18 · 162 阅读 · 0 评论 -
leetcode 167. 两数之和 II - 输入有序数组
leetcode 167. 两数之和 II - 输入有序数组思路分析:在输入数组有单调性的前提下,推荐使用双指针算法,双指针算法可以将时间复杂度由O(n^2) -> O(n)也可以使用hash表,hash表的查询和插入的时间复杂度均为O(1)使用hash表参考我的这篇博客,输入数组没有任何前提哈希表AC代码:class Solution {public: vector<int> twoSum(vector<int>& numbers, int原创 2021-04-02 10:43:47 · 140 阅读 · 0 评论 -
leetcode 1. 两数之和
leetcode 1. 两数之和思路分析:暴力枚举:两重循环枚举下标。这个思路很简单,也很好想,但是时间复杂度O(n^2)哈希表查询暴力枚举AC代码:class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> ans; for(int i = 0;i<nums.size();i++)原创 2021-04-02 09:19:08 · 124 阅读 · 0 评论 -
leetcode 1006. 笨阶乘
leetcode 1006. 笨阶乘思路分析:数学规律AC代码:class Solution {public: int clumsy(int N) { if(N == 1) return 1; if(N == 2) return 2; if(N == 3) return 6; if(N == 4) return 7; if(N % 4 == 0) return N+1; if(N %原创 2021-04-01 23:36:18 · 75 阅读 · 0 评论 -
leetcode 90. 子集 II
leetcode 90. 子集 II思路分析:暂时还没有理解这道题深邃的思想。AC代码:class Solution {public: // 可能包含重复元素,但不能包含重复子集 vector<vector<int>> ans; // 记录答案 vector<int> path; vector<vector<int>> subsetsWithDup(vector<int>&原创 2021-03-31 19:47:35 · 113 阅读 · 0 评论 -
leetcode 74. 搜索二维矩阵
leetcode 74. 搜索二维矩阵思路分析:根据题目意思,本质上这个二维数组可以展开成一个有序递增的一维数组,那么在一个有序递增的一维数组中查询一个数——查询方式采用:二分法。所以就转变成了,如何进行二维一维的坐标转变。以 n * m 的二维矩阵(n行m列)为例,展成一维后,数组下标范围[0,n*m-1]如果取 t 该数在一维数组中的下标,转换成矩阵坐标 ( t / m , t % m )AC代码:class Solution {public: bool searchMatr原创 2021-03-30 12:39:34 · 109 阅读 · 0 评论 -
leetcode 190. 颠倒二进制位
leetcode 190. 颠倒二进制位思路分析:AC代码:class Solution {public: uint32_t reverseBits(uint32_t n) { uint32_t res = 0; for(int i = 0;i<32;i++) { res = res << 1; // 写成 res *= 2; 也可以AC res += (n >> i原创 2021-03-29 11:22:01 · 92 阅读 · 0 评论 -
leetcode 173. 二叉搜索树迭代器
leetcode 173. 二叉搜索树迭代器思路分析:中序遍历不用递归的方法,用一个栈去实现。先将根节点及其左链丢入栈中,然后每次取出栈顶元素,看这个点有无右子树,如果有,将右子树的根和它的左链再次丢入栈中,如果没有,则删除栈顶元素,继续下一元素。AC代码:class BSTIterator {public: stack<TreeNode*> s; BSTIterator(TreeNode* root) { while(root) {原创 2021-03-28 22:58:02 · 86 阅读 · 0 评论 -
leetcode 61. 旋转链表
leetcode 61. 旋转链表思路分析:AC代码:class Solution {public: ListNode* rotateRight(ListNode* head, int k) { if(!head) return head; int n = 0; ListNode *tail; // 先求一下链表长度,方便将 k 缩小 for(auto p = hea原创 2021-03-28 15:47:49 · 102 阅读 · 0 评论 -
leetcode 83. 删除排序链表中的重复元素
leetcode 83. 删除排序链表中的重复元素思路分析:如果遇到重复的,每次只要重复链表中的一号元素AC代码:class Solution {public: ListNode* deleteDuplicates(ListNode* head) { // 判断是不是为空链表 if(!head) return head; // cur 定义为第一个结点 auto cur = head;原创 2021-03-28 15:07:31 · 86 阅读 · 0 评论 -
leetcode 每日一题 3.25
leetcode 每日一题 3.25知识点:删除排序链表中的重复元素(双指针的做法)最好可以用笔重新去演算一个这个算法的过程。AC代码:class Solution {public: // 判断中间元素个数的时候采用 双指针 ListNode* deleteDuplicates(ListNode* head) { // 建立虚拟 头 结点 auto dummy = new ListNode(-1); dummy ->原创 2021-03-25 20:46:34 · 175 阅读 · 0 评论 -
leetcode 每日一题 3.24
456. 132 模式**知识点:**单调栈思路分析:维护一个right作为正确答案将数组逆序丢入栈中,从栈底到栈头一直都是单调的建议拿笔写一下草稿AC代码:class Solution {public: bool find132pattern(vector<int>& nums) { stack<int> stk; // 维护一个 right 作为判断依据 int right = INT_MIN;原创 2021-03-24 20:32:14 · 165 阅读 · 0 评论 -
leetcode 每日一题 3.23
341. 扁平化嵌套列表迭代器知识点考察:树的深度优先遍历(递归写法)AC代码:class NestedIterator {public: vector<int> q; int k; NestedIterator(vector<NestedInteger> &nestedList) { k = 0; for(auto& l : nestedList) dfs(l);原创 2021-03-24 09:07:53 · 161 阅读 · 0 评论 -
leetcode 每日一题 2021.3.22
leetcode每日一题 2021.03.22这个题考查的是位运算的知识,属于简单题原创 2021-03-23 09:30:54 · 163 阅读 · 0 评论