
动态规划
文章平均质量分 58
麻利麻利吼
这个作者很懒,什么都没留下…
展开
-
2021-4-20 不同路径
题目 不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向下 -> 向下向下 -> 向下 -> 向右向下 ->转载 2021-04-20 11:28:30 · 76 阅读 · 0 评论 -
2021-4-19 最长回文子串
class Solution {public: string longestPalindrome(string s) { int count = 0; int max,begin,end,i,j; max = 0; begin = end = 1; int len = s.length(); if(len == 0 || len == 1) return s; vector&l原创 2021-04-19 15:07:07 · 93 阅读 · 0 评论 -
20210407 最长湍流子数组
题目 最长湍流子数组当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组:若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1];或 若 i <= k < j,当 k 为偶数时,A[k] > A[k+1] ,且当 k 为奇数时, A[k] < A[k+1]。也就是说,如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流子数组。返原创 2021-04-07 20:04:03 · 99 阅读 · 0 评论 -
2021-04-05 求最长递增子序列
class Solution {public: int lengthOfLIS(vector<int>& nums) { vector<int> dp(nums.size() , 1); int Max = 1; for(int i=1 ; i<dp.size() ; i++) { for(int j=0 ; j<i ; j++) {原创 2021-04-06 18:08:43 · 75 阅读 · 0 评论 -
2021-04-04一和零
给你一个二进制字符串数组 strs 和两个整数 m 和 n 。请你找出并返回 strs 的最大子集的大小,该子集中 最多 有 m 个 0 和 n 个 1 。如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。示例 1:输入:strs = [“10”, “0001”, “111001”, “1”, “0”], m = 5, n = 3输出:4解释:最多有 5 个 0 和 3 个 1 的最大子集是 {“10”,“0001”,“1”,“0”} ,因此答案是 4 。其他满足题意但较原创 2021-04-05 09:13:00 · 165 阅读 · 0 评论 -
2021-04-02 判断子序列
class Solution {public: bool isSubsequence(string s, string t) { if(s == "") return true; if(t == "") return false; int i,j; i = j = 0; for(i = 0 ; i<t.length() ; i++) { if(t[i] == s[j])原创 2021-04-03 13:22:04 · 200 阅读 · 0 评论 -
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 · 209 阅读 · 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 · 76 阅读 · 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 · 86 阅读 · 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 · 132 阅读 · 0 评论