算法专题
AgoniAngel
我的bug早已饥渴难耐
展开
-
【专题】最大子数组和 / 子矩阵和
最大子矩阵给定一个正整数和负整数组成的 N × M矩阵,找出元素总和最大的子矩阵,返回它的元素总和。输入: [1,3,-4,2], [2,-1,2,-1]输出: 5【思路】 这题可转化为"最大子数组和"求解,只需要将二维转化为一维。对于矩阵的每一列,我们将其加在一起,得到一维数组 b,b[i]表示矩阵第 i 列所有元素和。更准确的解释如下图:那么怎么把每个子矩阵都遍历到呢?我们每次选择两行 i 和 j,代表子矩阵的上下边界,并求每列的和(得到数组b),然后按"最..原创 2020-08-22 23:04:28 · 347 阅读 · 0 评论 -
【专题】股票问题
目录文章:一个方法团灭 6 道股票问题121. 买卖股票的最佳时机(只能买一次)122. 买卖股票的最佳时机 II(可多次买卖)123. 买卖股票的最佳时机 III(最多买2次)188. 买卖股票的最佳时机 IV309. 最佳买卖股票时机含冷冻期714. 买卖股票的最佳时机含手续费文章:一个方法团灭 6 道股票问题LeetCode股票题通用方法:一个方法团灭 6 道股票问题动态规划。三维DP:第一个是天数,第二个是允许交易的最大次数,第三个是当前的持有状态...原创 2020-08-09 13:59:29 · 348 阅读 · 0 评论 -
【专题】排列 / 组合问题
31. 下一个排列(next_permutation)给定一个数组,将它重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子:1,2,3 → 1,3,2 3,2,1 → 1,2,3 1,1,5 → 1,5,146. 全排列给定一个没有重复数字的序列,返回其所有可能的全排列。输入: [1,2,3]输出:[ [1,2,3]...原创 2020-07-31 21:50:21 · 205 阅读 · 0 评论 -
【专题】编辑距离/最长公共子序列/最长公共子数组
两个字符串a和b,长度相等,并且只有A和T两种字符。通过2种操作把a变成b,求最少操作次数。第1种操作,替换一个字符第2种操作,交换两个字符的位置示例:输入:TAAATTAATTAA输出:3解释:把第1个字符T替换为A,第3、5个字符交换,第4、6个字符交换。来自360笔试(2020.3.24)【思路】这题类似于编辑距离,但操作不同,总体要简单些,不需要...原创 2020-03-24 23:41:10 · 340 阅读 · 0 评论 -
【专题】最长子串问题(无重复/最多k个不同字符) -滑动窗口
目录1.LeetCode 3:无重复字符的最长子串(Medium)2.LeetCode 159:最多有2个不同字符的最长子串 (Medium)3.LeetCode 340:最多有k个不同字符的最长子串 (Medium)1.LeetCode 3:无重复字符的最长子串(Medium)给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。输入: "abcabcbb...原创 2020-03-08 23:05:20 · 434 阅读 · 0 评论 -
【专题】寻找缺失/重复/只出现一次的数
LeetCode41. 缺失的第一个正数给定一个未排序的整数数组,找出其中没有出现的最小的正整数。要求时间O(n),空间O(1)。输入: [1,2,0] 输出: 3输入: [3,4,-1,1] 输出: 2输入: [7,8,9,11,12] 输出: 1LeetCode268. 0-n中缺失的一个数字给定一个包含 0,...原创 2020-03-15 15:30:23 · 606 阅读 · 0 评论 -
【专题】在数字中间添加运算符,使等式成立
【招商银行卡笔试 20.04.08】给定一个字符串s和一个整数k,只含有数字0-9,在字符串中随意插入 + 号或 - 号(不能在两端插入),使得算式结果为k。输出可行的方案数。1字符串长度12,11e4类似题:Leetcode494#include <iostream>using namespace std;int k, cnt;string s;vo...原创 2020-04-11 18:46:04 · 2812 阅读 · 0 评论 -
【专题】打家劫舍/粉刷房子/栅栏涂色
打家劫舍【LeetCode 198】【题目】给定一个非负整数数组,代表每个房子的现金数。如果两间相邻的房屋同时被小偷闯入,系统会自动报警。计算小偷在不触动警报装置的情况下,能够偷窃到的最高金额。输入: [2,7,9,3,1]输出: 12解释: 偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。 偷窃到的最高金额...原创 2020-04-16 21:58:12 · 274 阅读 · 0 评论 -
【专题】回文
一、字符串问题5.最长回文子串【中等】给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。214. 最短回文串【困难】给定一个字符串s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。输入: "aacecaaa"输出: "aaacecaaa"输入: "cbbd"输出: "bb"516. 最...原创 2020-07-20 20:07:43 · 198 阅读 · 0 评论 -
【专题】链表
21. 合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:1->2->4, 1->3->4输出:1->1->2->3->4->423. 合并K个排序链表合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。输入:[1->4->5,1->3->4,2->6]输出: 1->1-...原创 2020-07-25 11:54:03 · 104 阅读 · 0 评论 -
【专题】字符串匹配
28. 实现 strStr()给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。输入: haystack = "hello", needle = "ll"输出: 2输入: haystack = "aaaaa", needle = "bba"输出: -110. 正则表达式匹配给你一个字符串s和一个字符规律p,请你来实现一个支持 '.'...原创 2020-07-31 20:17:23 · 292 阅读 · 0 评论