标签:算法
前言 大家好,这里是《齐姐聊算法》系列之递归和 DP 问题。 递归,是一个非常重要的概念,也是面试中非常喜欢考的。因为它不但能考察一个程序员的算法功底,还能很好的考察对时间空间复杂度的理解和分析。 本文只讲一题,也是几乎所有算法书讲递归的第一题,但力争讲出花来,在这里分享四点不一样的角度,
leetcode560.和为K的子数组 题目链接 算法 前缀和+哈希 时间复杂度O(n)。 在解决这道题前需要先清楚,一个和为k的子数组即为一对前缀和的差值【这句话摘自链接】 1.我们假设有这么一个子数组[i,j]满足数字和为k,那么就有pre[j] - pre[i-1] = k(注:pr
Manacher(马拉车算法) 序言 mannacher 是一种在 O(n)时间内求出最长回文串的算法 我们用暴力求解最长回文串长度的时间复杂度为O(n3) 很明显,这个时间复杂度我们接受不了,这时候,manacher也就是俗称的马拉车算法就出世了 算法描述 先考虑一种在O(n2)的时间复
给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2: 输入: [1, 2] 输出: 2 解释: 第三大的数不存在, 所以返回最大的数 2 .
移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 class Solution:
缺失数字 给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。 示例 1: 输入: [3,0,1] 输出: 2 你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现? class Solution: def missi
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素 例如数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为 1 给出的所有元素都大于 0,若数组大小为 0,请返回 0 前置知识
目录mapfilterreducezipsorted map 其中,function 参数表示要传入一个函数,其可以是内置函数、自定义函数或者 lambda 匿名函数;iterable 表示一个或多个可迭代对象,可以是列表、字符串等。 map() 函数的功能是对可迭代对象中的每个元素,都调
Codeforce 1420 A. Cubes Sorting 解析(思維) 今天我們來看看CF1420題目連結 題目 給一個數列(a),求能不能在不超過(frac{n(n-1)}{2}-1)次相鄰元素的調換下,得到遞增數列。 前言 @copyright petjelinux 版權所
  本篇讲解串的有关知识,串就是字符串,很常见。和线性表类似,但在基本操作上,通常以子串为操作对象。重点是字符串的模式匹配算法,就是在主串中找到子串。最经典的是KMP匹配算法的原理,要知道算法的原理及next数组的推理过程,求next数组可以先计算出部分匹配值表然后再变形,根据公式求解.改
Codeforce 682 D. Alyona and Strings 解析(思維、DP) 今天我們來看看CF682D題目連結 題目 略,請直接看原題。 前言 a @copyright petjelinux 版權所有觀看更多正版原始文章請至petjelinux的blog 想法 首先會感