力扣每日一题
你只在游戏中存在
这个作者很懒,什么都没留下…
展开
-
力扣每日一题2021 6月
(6.1)1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?func canEat(candiesCount []int, queries [][]int) []bool {dp:=make([]int,len(candiesCount))dp[0]=candiesCount[0] for i:=1;i<len(dp);i++{ dp[i]=dp[i-1]+candiesCount[i] }res:=make([]bool,len(queries))for原创 2021-06-01 22:53:10 · 88 阅读 · 0 评论 -
力扣每日一题2021 5月
(5.1)690. 员工的重要性/*// Definition for Employee.class Employee {public: int id; int importance; vector<int> subordinates;};*/class Solution { int res=0; void dfs(Employee a,vector<Employee*> employees) { res原创 2021-05-01 13:09:07 · 170 阅读 · 0 评论 -
力扣每日一题2021 4月
(4.10)263丑数//递归class Solution { vector<bool>dp;public: bool isUgly(int n) { if(n==0) return false; if(n==1) return true; if(n%2!=0&&n%3!=0&&n%5!=0) return false; if(n%2==0)return isUgly(n/2);原创 2021-04-10 13:45:20 · 133 阅读 · 0 评论 -
力扣每日一题154 寻找最小旋转排序数组最小值2
昨天代码改改 又能用了class Solution {public: int findMin(vector<int>& nums) { int l=0; int r=nums.size()-1; while(l<r) { int mid=l+(r-l)/2; if(nums[r]<nums[mid]) l=mid+1; else if(nums[r]==nums[mid])原创 2021-04-09 11:23:34 · 44 阅读 · 0 评论 -
力扣每日一题153 寻找旋转排序数组最小值
1.遍历class Solution {public: int findMin(vector<int>& nums) { for(int i=1;i<nums.size();i++) { if(nums[i]<nums[i-1]) return nums[i]; } return nums[0]; }};2.二分法1 2 3 4 54 5 6 7 0 1 2 3与右边值进行对比 然原创 2021-04-08 15:58:49 · 49 阅读 · 0 评论 -
力扣每日一题81搜索旋转排序数组2
二分查找class Solution {int n; bool dfs(vector<int>nums,int i,int j,int target) { if(i>j) return false; int mid=i+(j-i)/2; if(nums[mid]==target) return true; if(nums[i]==nums[j]&&nums[j]==nums[mid]) r原创 2021-04-07 14:41:03 · 46 阅读 · 0 评论 -
力扣每日一题80 删除有序数组重复项
双指针class Solution {public: int removeDuplicates(vector<int>& nums) { int slow=0; int fast=0; while(fast<nums.size()) { if(slow>=2&&nums[slow-2]==nums[fast]) {原创 2021-04-06 23:03:46 · 54 阅读 · 0 评论 -
力扣每日一题88 合并两个有序数组
class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int i=m-1; int j=n-1; int k=nums1.size()-1; while(j>=0) { if(i>=0&&nums1[i]>nums2[j])原创 2021-04-06 00:16:34 · 60 阅读 · 0 评论 -
力扣每日一题781 森林中的兔子
class Solution { map<int,int>m; int count=0;public: int numRabbits(vector<int>& answers) { for(int i=0;i<answers.size();i++) { m[answers[i]]++; } for(auto it=m.begin();it!=m.end();it++) {原创 2021-04-04 14:10:52 · 73 阅读 · 0 评论 -
力扣每日一题1143 最长公共子序列
动态规划class Solution { vector<vector<int>>dp;public: int longestCommonSubsequence(string text1, string text2) { int m=text1.size()+1; int n=text2.size()+1; dp.resize(m,vector<int>(n,0)); for(int i=1;i<m原创 2021-04-03 17:26:40 · 79 阅读 · 0 评论 -
力扣每日一题 面试题17.21 直方图水量
1.暴力法(果然超时了233)class Solution { int count=0;public: int trap(vector<int>& height) { if (height.size()==0) return 0; int Max= *max_element(height.begin(),height.end()); for(int i=0;i<Max;i++) {原创 2021-04-02 11:07:30 · 64 阅读 · 0 评论 -
力扣每日一题1006 笨阶乘
庆祝拿到三月打卡徽章!!!采用队列思想 存入乘法除法的计算结果 然后在弹出算总值 class Solution { vector<char>m; queue<int>q; int res; void dfs(vector<char>&m,int n,int i) { if(n<=0) {q.push(res); return;} if(m[i]=='+'||m[i]==.原创 2021-04-01 16:15:20 · 61 阅读 · 0 评论 -
力扣每日一题90 子集2
class Solution {public: vector<int>a; vector<vector<int>>res; void dfs(bool flag, vector<int>& nums,int i) { if(i==nums.size()) { res.push_back(a); return;} df原创 2021-03-31 21:03:49 · 50 阅读 · 1 评论 -
力扣每日一题74 搜索二维矩阵
先查找 再二分法查找class Solution { bool search(vector<int>&m,int low,int high,int t) { if(low>high) return false; int mid=low+(high-low)/2; if(m[mid]==t) return true; if(m[mid]>t) return search(m,low,mid-1,t)原创 2021-03-30 14:47:41 · 76 阅读 · 0 评论 -
力扣每日一题190 颠倒二进制位
方法一 移位法class Solution { public: uint32_t reverseBits(uint32_t n) { uint32_t ret=0; for(int i=0;i<32;i++) { ret = ret << 1; unsigned bit = n & 1; n=n>> 1; ret |= bit; } return ret; }};原创 2021-03-29 16:32:57 · 75 阅读 · 0 评论 -
力扣每日一题173 二叉搜索树迭代器
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} *原创 2021-03-28 20:07:39 · 50 阅读 · 0 评论 -
力扣每日一题83 删除排序链表中的重复元素
昨天的代码改下就A了class Solution { int flag=0;public: ListNode* deleteDuplicates(ListNode* head) { ListNode* anchor=new ListNode(-1); anchor->next=head; //链表锚点 ListNode* pre=anchor; ListNode* pnext=nullptr; while(head) {原创 2021-03-26 16:27:12 · 73 阅读 · 0 评论 -
力扣每日一题456 132模式
先遍历一遍找到(0,i-1)的最小值然后 从后往前遍历 找到当该值大于右值 且第一个右值大于左最小值的值 RETURN TRUEclass Solution {stack<int>q;public: bool find132pattern(vector<int>& nums) { int max=INT_MIN; vector<int>MIN=vector<int>(nums.size(),INT_M原创 2021-03-25 15:11:13 · 63 阅读 · 0 评论 -
力扣每日一题82 删除排序链表中的重复元素 II
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next)原创 2021-03-25 13:58:19 · 61 阅读 · 0 评论 -
力扣每日一题341 扁平化嵌套列表迭代器
/** * // This is the interface that allows for creating nested lists. * // You should not implement it, or speculate about its implementation * class NestedInteger { * public: * // Return true if this NestedInteger holds a single integer, rather原创 2021-03-23 14:10:33 · 70 阅读 · 0 评论 -
力扣每日一题191 位1的个数
class Solution {public: int hammingWeight(uint32_t n) { int ret=0; for(int i=0;i<32;i++) { if(n&(1<<i)) ret++; } return ret; }};原创 2021-03-22 11:39:47 · 74 阅读 · 0 评论 -
力扣每日一题73 矩阵置零
我的想法:拿两个集合保存二维数组的行列值class Solution { set<int> a; set<int> b;public: void setZeroes(vector<vector<int>>& matrix) { int m=matrix.size(); int n=matrix[0].size(); for(int i=0;i<m;i++)原创 2021-03-21 19:49:01 · 111 阅读 · 0 评论 -
力扣每日一题150 逆波兰式
class Solution {int num=0;stack<int>q;int a1=0;int a2=0;int flag=0;public: int evalRPN(vector<string>& tokens) { for(int i=0;i<tokens.size();i++) { num=0; int j=0; if(tokens[i]!="+"&原创 2021-03-20 17:49:23 · 62 阅读 · 0 评论 -
力扣每日一题1603 设计停车场
class ParkingSystem { vector<int>p=vector<int>(3);public: ParkingSystem(int big, int medium, int small) { p[0]=big; p[1]=medium; p[2]=small; } bool addCar(int carType) { if(carType==1&&p[0]>0)原创 2021-03-19 11:23:14 · 97 阅读 · 0 评论 -
力扣每日一题92 反转链表2
1.自己写的代码:感觉比较繁琐 也是先找到反转的位置以及 前和后的一个节点位置采用三指针的方式进行节点的交换最后还要考虑left=1的这种特殊情况/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x),原创 2021-03-18 22:00:35 · 81 阅读 · 0 评论 -
力扣每日一题115 不同的子序列
1.暴力法超时class Solution { int count=0; string s1; void dfs(string s,string& t,int i) { if(i==t.size()&&i<=s.size()){ count++;return;} if(i==s.size()||i==t.size()) return;//到任意末端返回 if(s[i]!=t[i]) {原创 2021-03-17 11:35:20 · 72 阅读 · 0 评论 -
力扣每日一题132 分割回文串2
class Solution { vector<vector<int>>dp; vector<int>res;public: int minCut(string s) { int n=s.size(); dp.resize(n,vector<int>(n,1)); for(int i=n-1;i>=0;i--) { for(int j=i+1;j<s.si原创 2021-03-09 15:07:43 · 55 阅读 · 0 评论 -
力扣每日一题131 分割回文串
class Solution { vector<vector<string>>res; vector<string>ans; vector<vector<int>>dp; int n;public: void dfs(string &s,int i) { if(i==n) { res.push_back(ans); ret原创 2021-03-07 17:35:23 · 58 阅读 · 0 评论 -
力扣每日一题224 基本计算器
class Solution { stack<int>f;public: int calculate(string s) { long num=0; int res=0; int sign=1; for(int i=0;i<s.size();i++) { if(s[i]>='0'&&s[i]<='9')原创 2021-03-10 15:45:40 · 73 阅读 · 0 评论 -
力扣每日一题354 俄罗斯套娃
class Solution { vector<int>dp;public: int maxEnvelopes(vector<vector<int>>& envelopes) { sort(envelopes.begin(),envelopes.end()); dp.resize(envelopes.size(),1); for(int i=0;i<envelopes.size();i++) { for(in原创 2021-03-04 14:40:23 · 168 阅读 · 2 评论 -
力扣每日一题232 实现队列
class MyQueue { stack<int> a; stack<int> b;public: /** Initialize your data structure here. */ MyQueue() { } /** Push element x to the back of queue. */ void push(int x) { a.push(x); } /**原创 2021-03-05 14:31:20 · 82 阅读 · 0 评论 -
力扣每日一题503 下一个更大元素2
1.暴力法:很简单 对于每个元素前后搜索这里就不写了。2.单调栈 由于是循环因此数组长度为2*N-1class Solution { stack<int>a; public: vector<int> nextGreaterElements(vector<int>& nums) { vector<int>res(nums.size(),-1); int n=nums.size(原创 2021-03-06 17:13:49 · 50 阅读 · 0 评论 -
力扣每日一题304 二维区域检索求和
给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。暴力法超时:class NumMatrix { private: vector<vector<int>>dp;public: NumMatrix(vector<vector<int>>& matrix) { if(matrix.size()==0||matrix[0].size()==0)原创 2021-03-02 19:47:13 · 126 阅读 · 0 评论 -
力扣每日一题338 比特位计数
1.暴力法 今天竟然能过class Solution { vector<int>dp;public: vector<int> countBits(int num) { for(int i=0;i<=num;i++) { count(i); } return dp; } void count(int i) { int cou原创 2021-03-03 16:31:54 · 68 阅读 · 1 评论 -
力扣每日一题1047 删除重复字符
class Solution { stack<int>a;public: string removeDuplicates(string S) { for(int i=0;i<S.size();i++) { if(!a.empty()&&a.top()==S[i]) { a.pop(); } else原创 2021-03-09 15:19:17 · 64 阅读 · 0 评论 -
力扣每日一题227 基本计算器2
presign保存前一个标志如果前一个标志为+ 则PUSH当前值如果前一个标志为- PUSH当前值相反数如果前一个标志为* PUSH当前值乘以栈顶元素 POP栈顶如果前一个标志为/ PUSH栈顶元素除以当前值 POP栈顶然后置零每次的NUM更新新的presignclass Solution { stack<int>f;public: int calculate(string s) { int res=0; long num=0;原创 2021-03-11 20:07:26 · 174 阅读 · 0 评论 -
力扣每日一题331 验证前序二叉树
先除去所有的逗号,由于只关注二叉树结构,因此多位数的值可以拿单个字符‘1’代替。两个连续#加前面一个数可以消去,之后在插入一个新的#,然后控制i从字符串末尾重新遍历。最后判断字符串是否只剩下一个‘#‘即可class Solution { int flag=0; int s=0;//标记前一个逗号位置 string q;public: bool isValidSerialization(string preorder) { for(int i=0;i&原创 2021-03-12 13:41:37 · 62 阅读 · 0 评论 -
力扣每日一题705 设计哈希表
哈希表=数组+链表 数组存hash值 链表存值采用求余得到hash值:hash(x)=x%basebase为哈希值空间大小 当空间足够大时 搜索的复杂度平均为o(1)此外可以通过迭代器删除节点值:a.erase(it) it为该节点值的指针。class MyHashSet { vector<list<int>>set; int base=256; int hash(int key) { return key%base;原创 2021-03-13 14:39:27 · 94 阅读 · 0 评论 -
力扣每日一题706 设计哈希映射
原理和昨天一样 hash表=数组+链表今天要考虑键值 因此使用结构体Kv保存键 和值。如果没有该键 则使用结构体进行构造新键值。并将其压入LIST中。class MyHashMap { int base=256; int hash(int key) { return key%base; } struct Kv{ int key; int value; }; vector<list<Kv>&原创 2021-03-14 22:09:11 · 77 阅读 · 0 评论 -
力扣每日一题54 螺旋矩阵
class Solution {vector<int>res;public: vector<int> spiralOrder(vector<vector<int>>& matrix) { int row2=matrix.size()-1; int col2=matrix[0].size()-1; int row1=0; int col1=0; while(1) { for(int原创 2021-03-15 15:16:21 · 67 阅读 · 0 评论