自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 LeetCode 单调栈法

739。每日温度 中等1.暴力法 来自官方题解对于温度列表中的每个元素 T[i],需要找到最小的下标 j,使得 i < j 且 T[i] < T[j]。由于温度范围在 [30, 100] 之内,因此可以维护一个数组 next 记录每个温度第一次出现的下标。数组 next 中的元素初始化为无穷大,在遍历温度列表的过程中更新 next 的值。反向遍历温度列表。对于每个元素 T[i],在数组 next 中找到从 T[i] + 1 到 100 中每个温度第一次出现的下标,将其中的最小下标记为 w

2021-03-04 14:22:01 155 1

原创 LeetCode 19,22,31 中等

19.删除链表的倒数第n个节点1.计算长度,两次遍历class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { int count=1; ListNode* temp=head; while(temp->next!=nullptr){ temp=temp->next; count++;

2021-03-04 12:42:43 76 1

原创 LeetCode 中等 2,3,5,11,15,17

2.两数相加模拟相加操作,递归实现相加大于10时,记录进位数为1,反之为0有任一链表为空时,新建0节点补上都为空时,若进位数为1,则补上1节点。class Solution {public: void addnum(ListNode* n1,ListNode* n2,int up){ if(n1->val+n2->val+up<10){ n1->val=n1->val+n2->val+up;

2021-03-04 11:25:59 97

原创 LeetCode 136,141,155,160,169,206

LeetCode 136 只出现一次的数字 简单一次异或就得出结果class Solution {public: int singleNumber(vector<int>& nums) { int n=nums.size(); int x=0; for(int i=0;i<n;i++){ x^=nums[i]; } return x; }};LeetC

2021-03-01 01:10:05 73

原创 LeetCode 53 最大子序和 简单

动态规划,题解写的很简洁class Solution {public: int maxSubArray(vector<int>& nums) { int pre = 0, maxAns = nums[0]; for (const auto &x: nums) { pre = max(pre + x, x); maxAns = max(maxAns, pre); }

2021-02-28 22:40:58 84

原创 LeetCode 21 合并两个有序列表 简单

1。递归class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1==nullptr){ return l2; } else if(l2==nullptr){ return l1; } else if(l1->val<l2->val){

2021-02-28 22:21:30 62

原创 LeetCode1 两数之和 简单

使用哈希表查找class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int> mp; int n=nums.size(); for(int i=0;i<n;++i){ int x=target-nums[i]; if(m

2021-02-28 21:57:44 61

原创 LeetCode 104 二叉树的最大深度 简单

1.BFSclass Solution {public: int maxDepth(TreeNode* root) { queue<TreeNode*> q; int count=0; if(root==nullptr) return 0; q.push(root); while(!q.empty()){ int n=q.size(); for(int i=

2021-02-28 21:22:35 42

原创 LeetCode 70 爬楼梯 简单

很简单的问题,可以使用递归完成,也可以使用迭代完成。1.迭代:用cur记录当前值f[n];用pre记录f[n-1];用pre2记录f[n-2];f[n]=f[n-1]+f[n-2];class Solution {public: int climbStairs(int n) { if(n==1) return 1; int cur=0; int pre=1; int pre2=1; for(int i=2;

2021-02-28 21:15:45 52

原创 LeetCode 周赛230 第2题

最接近目标价格的甜点成本周赛期间暴力搜索没做出来,方法选错了,没能找出所有情况。参考了题解,用dfs进行全搜索。class Solution { public: int ans=INT_MAX; void dfs(vector<int>& toppingCosts, int p,int target,int sums){ int diffsum=abs(sums-target),diffans=abs(ans-target); .

2021-02-28 14:55:08 89

原创 LeetCode 121 买卖股票的最佳时机

用动态规划来做,在一天之中可能出现两种状态中的一个:持有股票或者未持有股票。持有股票可能是由于之前就持有,也有可能是今天进行了买入。未持有股票可能是由于之前就未持有,也有可能是今天进行了卖出。对于每种可能的状态,都记录此时手上持有的现金的最大可能值。在最后一天,如果还持有股票,那么必然会卖出,因此只要输出最后一天不持有股票的状态即可。class Solution {public: int maxProfit(vector<int>& prices) {

2021-02-28 14:22:14 49

原创 LeetCode 5 最长回文子串 中等

1.动态规划法,参考官方题解class Solution {public: string longestPalindrome(string s) { int n = s.size(); int dp[n][n]; string ans; for (int L = 0; L < n; ++l) { for (int i = 0; i + L < n; ++i) { i

2021-02-28 10:24:58 41

原创 LeetCode 896 单调数列 简单

2021/2/28 每日一题用两个dp数组来标记递增或递减,遍历一次完成。class Solution {public: bool isMonotonic(vector<int>& A) { int n=A.size(); int dpplus[n],dpminu[n]; dpminu[0]=0,dpplus[0]=0; for(int i=0;i<n-1;++i){ if(A[i

2021-02-28 09:33:09 58

原创 LeetCode 45 跳跃游戏II

用迭代没做出来,还是继续用贪心法。class Solution {public: int jump(vector<int>& nums) { int count=0; int n=nums.size(); if(n==0||n==1) return 0; int rightmost=0; int end=0; for(int i=0;i<n-1;++i){

2021-02-28 09:18:51 107

原创 LeetCode 55 跳跃游戏

跳跃游戏尝试使用递归来进行每一步的判定,不过超时了,看了题解,还是用贪心来做。class Solution{public: bool canJump(vector<int> &nums){ int n=nums.size(); int rightmost=0; for(int i=0;i<n;++i){ if(i<=rightmost){ rightmost=max(rightmost,i+nums[i]); } if(right

2021-02-27 23:44:12 36

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除