Two Sum类 首先是基本的Two Sum题解 用hashmap 时间复杂度O(n),空间复杂度O(n),每一次首先找hashmap中有没有target - nums[i], 如果没有将nums[i]入map 用双指针法,时间复杂度O(n + nlogn), 空间复杂度O(1) 首先要对数组进行排 ...
分类:
其他好文 时间:
2020-02-11 09:28:14
阅读次数:
43
一个字符串能重排成回文串等价于这个字符串最多只有一个字符出现次数为奇数次 这题的询问和子树中深度有关,那么显然可以用dsu on tree解决 把询问离线下来挂在点上,然后按dsu on tree的顺序统计子树信息即可 复杂度\(O(nlogn+26m)\) 1 #include<bits/stdc ...
分类:
其他好文 时间:
2020-02-10 13:37:02
阅读次数:
64
题意:对于一个有序数组,输出和为target的两个元素的下标。题目保证仅有唯一解。 分析: 法一:二分。枚举第一个元素,二分找另一个元素,时间复杂度O(nlogn),非最优解。 class Solution { public: vector<int> twoSum(vector<int>& numb ...
分类:
其他好文 时间:
2020-02-09 22:14:01
阅读次数:
73
摘自:https://www.cnblogs.com/RabbitHu/p/FFT.html 快速傅里叶变换(FFT)是一种能在O(nlogn)O(nlog?n)的时间内将一个多项式转换成它的点值表示的算法。 点值表示:设A(x)是一个n?1次多项式,那么把n个不同的x代入,会得到n个y。这n对(x ...
分类:
其他好文 时间:
2020-02-09 20:10:38
阅读次数:
75
Leetcode 第175场周赛 题解 检查整数及其两倍数是否存在 数据范围小的可怜,$O(n^2)$ 解法可行。如果范围大一点,可以先进行排序然后遍历每一个数进行二分查找,时间复杂度 $O(nlogn)$ 代码是平方解法。 制造字母异位词的最小步骤数 那既然能随便换,哈希一波看看有多少个不一样,因 ...
分类:
其他好文 时间:
2020-02-09 14:42:59
阅读次数:
112
时间复杂度O(nlogn) 找一个基数,使得这个基数的左边都比它小,右边都比它大。 双指针实现,从左边找找到第一个比基数大下标为i, 从右边找到第一个比基数小的数下标为j,i、j交换。 i == j 时将基数与a[i]交换,分治继续对(l , i-1) 与(i+1 , r)区间进行排序。 //#in ...
分类:
编程语言 时间:
2020-02-09 09:42:55
阅读次数:
46
ST表超级详解 关于ST表,有很多文章,这里本蒟蒻也来发一波~~ 希望能为您提供帮助~~ 1.ST表的介绍 ST表算法全称Sparse-Table算法,是由Tarjan提出的一种解决RMQ问题(区间最值)的强力算法。离线预处理时间复杂度 θ(nlogn),在线查询时间 θ(1),可以说是一种非常高效 ...
分类:
其他好文 时间:
2020-02-08 14:05:00
阅读次数:
113
采用Java代码描述 一、时间复杂度和空间复杂度 我们通常说到的时间复杂度是指渐进时间复杂度,其定义为: 若存在函数f(n),当,其中C是不为零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),则称O(f(n))为算法的渐进时间复杂度,简称时间复杂度。 先记住如下常见的时间 ...
分类:
编程语言 时间:
2020-02-06 22:56:32
阅读次数:
74
微信公众号:bigsai 前言 在排序中,我们可能大部分更熟悉冒泡排序、快排之类。对归并排序可能比较陌生。然而事实上归并排序也是一种稳定的排序,时间复杂度为O(nlogn). 归并排序是基于分治进行归并的,有二路归并和多路归并.我们这里只讲二路归并并且日常用的基本是二路归并。并且归并排序的实现方式有 ...
分类:
编程语言 时间:
2020-02-02 19:48:33
阅读次数:
100
前言 写于$20200202$(滑稽 算法 现在有这样一个问题: 求一个字符串子串中回文串的数量 俺们会哈希!复杂度$O(nlogn)$ 但是显然我们今天要讲更优秀的算法~ 考虑一下,$kmp$算法是如何做到线性匹配的?它重复利用了之前的匹配信息! 那么我们在求回文串问题的时候可不可以也利用之前的匹 ...
分类:
编程语言 时间:
2020-02-02 15:54:07
阅读次数:
77