2021年3月
麻利麻利吼
这个作者很懒,什么都没留下…
展开
-
20210323 买卖股票
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 示例 1: 输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1原创 2021-03-23 20:02:07 · 171 阅读 · 0 评论 -
20210322 区域和检索 - 数组不可变
class NumArray { public: vector<int> nums; public: NumArray(vector<int>& nums) { this->nums = nums; } int sumRange(int left, int right) { if(left > right) return 0; if(left == right) return原创 2021-03-22 19:43:46 · 39 阅读 · 0 评论 -
2021-03-20 除数博弈
爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。 最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作: 选出任一 x,满足 0 < x < N 且 N % x == 0 。 用 N - x 替换黑板上的数字 N 。 如果玩家无法执行这些操作,就会输掉游戏。 只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 False。假设两个玩家都以最佳状态参与游戏。 示例 1: 输入:2 输出:true 解释:爱丽丝选择 1,鲍勃无法进行操作。 示例 2: 输入:3 输出:fa原创 2021-03-20 17:27:07 · 41 阅读 · 0 评论 -
20210319 按摩师
题目 按摩师 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。 示例 2: 输入: [2,7,9,3,1] 输出: 12 解释: 选择 1 号预约、 3 号预约和 5 号预约,总时长 = 2 + 9 + 1 = 12。 示原创 2021-03-19 14:23:27 · 96 阅读 · 0 评论 -
2021-03-15 最大子序和
```cpp class Solution { int MAX = INT_MIN; public: int maxSubArray(vector<int>& nums) { for(int i=0 ; i<nums.size() ; i++) getSolution(nums , i); return MAX; } void getSolution(vector<int>&.原创 2021-03-15 23:38:00 · 42 阅读 · 0 评论 -
2021-03-12 两数相加
class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { Add(l1,l2,NULL,0); return l1; } void Add(ListNode* p1,ListNode* p2,ListNode* p , int c) { ListNode* pNode; if(!p1 &&原创 2021-03-14 11:34:02 · 73 阅读 · 0 评论 -
2021-03-09 具有所有最深节点的最小子树
题目 具有所有最深节点的最小子树 给定一个根为 root 的二叉树,每个节点的深度是 该节点到根的最短距离 。 如果一个节点在 整个树 的任意节点之间具有最大的深度,则该节点是 最深的 。 一个节点的 子树 是该节点加上它的所有后代的集合。 返回能满足 以该节点为根的子树中包含所有最深的节点 这一条件的具有最大深度的节点。 示例 1: 输入:root = [3,5,1,6,2,0,8,null,null,7,4] 输出:[2,7,4] 解释: 我们返回值为 2 的节点,在图中用黄色标记。 在图中用蓝色标记原创 2021-03-09 19:35:39 · 112 阅读 · 0 评论 -
2021-03-05 划分为k个相等的子集
题目 划分为k个相等的子集 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 示例 1: 输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4 输出: True 说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。 class Solution { public: bool canPartitionKSubsets(vector<int>& nums, int原创 2021-03-05 17:00:20 · 298 阅读 · 0 评论 -
2021-03-03 所有可能的满二叉树
题目 所有可能的满二叉树 满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。 返回包含 N 个结点的所有可能满二叉树的列表。 答案的每个元素都是一个可能树的根结点。 答案中每个树的每个结点都必须有 node.val=0。 你可以按任何顺序返回树的最终列表。 示例: 输入:7 输出:[[0,0,0,null,null,0,0,null,null,0,0],[0,0,0,null,null,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,null,null,null,nul原创 2021-03-04 11:40:27 · 95 阅读 · 1 评论 -
2020-03-01 两两交换链表中的节点
class Solution { public: ListNode* swapPairs(ListNode* head) { if(!head) return head; return getSolution(head->next , head); } ListNode* getSolution(ListNode* pNode , ListNode* pLast) { if(!pNode) return pLast;原创 2021-03-02 14:46:13 · 36 阅读 · 0 评论