摘要:
反转链表 II 解题思路 反转链表,首先我简单回忆了一下递归逆置链表的算法,大概有些忘了,但是稍微调整一下好像可以了。 递归逆置链表的算法思想是:根据链表一直往下next,这样可以找到最后的那个结点。这个结点也就是新的首元结点。用一个变量记录下来。 然后往上回溯,回溯的过程不停的 返回首元结点,然后 阅读全文
摘要:
Power(x,n) 解题思路 思路一:for循环迭代。 代码比较简单,就不贴出来了。结果很显然超时。 思路二:快速幂 代码超时之后猛然想起来之前学过一招制敌的方法,但是一时想不起来名字。只好百度 快速幂算法的思想可以总结为下面的数学公式 思路比较简单,其实是二分的思路。但是如果之前没有相应的思维训 阅读全文
摘要:
题目链接:最小路径和 解法一:深度优先搜索 class Solution { int sum = INT_MAX; int m,n; public: int minPathSum(vector<vector<int>>& grid) { m = grid.size(); n = grid[0].si 阅读全文
摘要:
题目链接:最大子序和 假设 \(nums\) 的数组长度是 \(n\),下标从 $0$ 到 $1$。 我们用 \(a_{i}\) 代表 \(nums[i]\) ,用 $dp[i]$代表以第$i$个数结尾的【连续子数组的最大和】,那么很显然我们要求的答案就是: \(max{dp[i]} 0 \leq 阅读全文
摘要:
题目链接:按摩师 方法一:设计二维状态变量 第一步:设计状态 【状态】这个词可以理解为 【记录了求解问题到了哪一个阶段】。 由于当前这一天按摩师有两种选择:(1)接预约;(2)不接预约。但根据题意,今天是否接预约,是受到昨天影响的。为了消除这种影响,我们在状态数组要设置这个维度。 dp[i][0] 阅读全文
摘要:
题目链接:下一个更大元素 I 参考leetcode官方题解 我们可以忽略数组nums1,直接将nums2中的每个元素进行求解,求出其下一个更大的元素。利用map映射,将答案保存在“字典”中。随后便利nums2的子集(nums1),直接输出答案即可。 对于nums2,我们可以使用单调栈来解决这个问题 阅读全文
摘要:
题目链接:链表中的下一个更大节点 O(N^2)的一种写法。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), ne 阅读全文
摘要:
题目链接:链表组件 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ 阅读全文
摘要:
题目链接:分隔链表 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ 阅读全文
摘要:
题目链接:排序链表 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode 阅读全文