
LeetCode
tama1204
抬头看路,低头拉车
展开
-
【LeetCode】【总结】 三大子序列最值问题(最长公共子序列、最长上升子序列、最长回文子序列)
做力扣的时候发现都可以用动态规划的方法解决上述三个子序列问题,并且发现三者之间有些关联。下面先挨个分析各个问题:1、最长公共子序列如下图所示,这是两个字符串,从中找出之间的公共子序列。则最长公共子序列为:我们可以通过动态规划的方法解决问题,重点就是如何原问题分解成子问题,我们发现如果两个字符串的最后一个字符相等,即str1[i] = str2[j],那么我们可以将其分...原创 2020-03-30 19:25:18 · 759 阅读 · 0 评论 -
【LeetCode】No.53 最大子序和(动态规划)
class Solution {public: int maxSubArray(vector<int>& nums) { if(nums.empty()) return 0; int maxValue = nums[0]; for(int i =1;i<nums.size();i++){ n...原创 2020-03-09 13:48:57 · 166 阅读 · 0 评论 -
【LeetCode】No.376 摆动序列(C++实现贪心算法)
分析:其实题意分析起来不难,上图中diff分别为nums[i]-nums[i-1],如果大于零就表示为1,小于零就表示为-1。知道找到最长的不连续的1和-1序列即可,如上图中的三个连续的1删除左边的10和12,两个连续的-1删除10。而且很容易就能写出事件复杂度为O(n)的程序,但重点就在于空间复杂度,能不能用O(1)的空间复杂度完成编程?能!一个变量表示序列的变化即可。...原创 2019-12-31 15:36:11 · 725 阅读 · 0 评论 -
【LeetCode】No.134 加油站(C++实现贪心算法)
在一条环路上有N个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明: 如果题目有解,该答案即为唯一答案。 输入数组均...原创 2019-12-31 11:39:09 · 741 阅读 · 0 评论 -
【LeetCode】No.55 跳跃游戏(C++实现贪心算法)
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。方法一:反向贪心class Solution {public: bool canJump(vector<int>& nums) { if(nums.empty()) retur...原创 2019-11-25 17:33:45 · 463 阅读 · 0 评论 -
【LeetCode】No.17 电话号码的字母组合(C++实现)
1,题目描述给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。2,解题思路采用深度优先搜索的方法,下面描述其操作流程1,假设输入的字符串为:234,每个数字都包含3个字母,理论上有3^3种排列组合。2,可以先选定2中的a、和3中的d,遍历4中的ghi。然后再选定2中的a、和3中...原创 2019-11-11 20:29:17 · 550 阅读 · 1 评论 -
【LeetCode】No.5 最长回文子串(C++实现马拉车算法)
1,题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"2,马拉车算法(Manacher算法)在我们考虑暴力穷举时,其时间复杂度达到了惊人的O(n^3),再考虑中心拓展法时,其时间复杂度度为O...原创 2019-11-07 20:31:00 · 542 阅读 · 0 评论 -
【LeetCode】No.3 无重复字符的最长子串(C++实现)
1,题目描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最...原创 2019-11-02 17:59:23 · 404 阅读 · 0 评论 -
【LeetCode】No.1234 替换字串得到平衡字符串(C++实现)
1,题目描述:有一个只含有'Q', 'W', 'E','R'四种字符,且长度为 n的字符串。假如在该字符串中,这四个字符都恰好出现n/4次,那么它就是一个「平衡字符串」。给你一个这样的字符串 s,请通过「替换一个子串」的方式,使原字符串 s 变成一个「平衡字符串」。你可以用和「待替换子串」长度相同的任何 其他字符串来完成替换。请返回待替换子串的最小可能长度。...原创 2019-10-30 20:25:31 · 697 阅读 · 0 评论