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
单点修改+区间查询=树状数组 空间复杂度O(n) 时间复杂度O(mlogn) 1 #include <set> 2 #include <map> 3 #include <cmath> 4 #include <queue> 5 #include <vector> 6 #include <cstdio> ...
分类:
编程语言 时间:
2020-02-09 20:34:15
阅读次数:
79
K 近邻算法 作用:分类算法 优点:最简单、不需要训练、容易理解 缺点:计算复杂度高、空间复杂度高 原理:计算新数据与样本集中所有数据的欧式距离,提取距离最近的 K 个样本的标签,取 K 个样本里出现次数最多的标签,作为新数据的分类标签 决策树 ID3 作用:分类算法 优点:计算复杂度不高、容易理解 ...
分类:
编程语言 时间:
2020-02-09 09:54:44
阅读次数:
61
时间复杂度O(n) 空间复杂度O(1) 1 #include <cstdio> 2 int main() { 3 int T;scanf("%d",&T); 4 for(int t=1,n,a,l,r,s,L,R,S;t<=T;t++) { 5 scanf("%d",&n),l=L=R=1; 6 f ...
分类:
编程语言 时间:
2020-02-08 15:32:38
阅读次数:
52
在大一的C语言课程中学习了排序算法中的冒泡算法,自以为已经掌握。但随着寒假自学的进展,发现冒泡算法没有当时想象的那么简单。 初学时: 复杂度 :O(n*n) for(int i = 0;i<nums.length;i++) { for(int j = i+1;j<nums.length;j++) { ...
分类:
编程语言 时间:
2020-02-07 12:58:32
阅读次数:
115
正确做法是: 只保存行/列/对角线的和,而不用保存所有元素,空间复杂度从O(n2)降到O(n);move()只需判断四个值是否 = n - 1: 当前行sum,当前列sum,两个对角线,时间复杂度为O(1) 而我只是用dict记录是否还有可能赢。差强人意。 class TicTacToe: def ...
分类:
其他好文 时间:
2020-02-06 23:01:45
阅读次数:
59
采用Java代码描述 一、时间复杂度和空间复杂度 我们通常说到的时间复杂度是指渐进时间复杂度,其定义为: 若存在函数f(n),当,其中C是不为零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),则称O(f(n))为算法的渐进时间复杂度,简称时间复杂度。 先记住如下常见的时间 ...
分类:
编程语言 时间:
2020-02-06 22:56:32
阅读次数:
74
数据结构小白入门 数据结构指一组相互之间存在一种或多种特定关系的数据元素的集合, 当我们需要在计算机中存储这些数据时,还涉及到数据的,组织方式,在计算机中的存储方式,以及定义在该数据上的一组操作; 一组数据相互之间有某种关系 组织方式 存储方式 以及可对其进行的一组操作 理解: 我们学习的最终目的是 ...
分类:
编程语言 时间:
2020-02-06 01:27:35
阅读次数:
84
主席树,即可持久化线段树,它是在权值线段树的基础上,记录了每个历史版本,从而可以方便快速的处理一些区间问题,最经典的应用有查询区间第 k 小。 当然,如果我们直接每次修改开一棵线段树,空间复杂度太大,肯定不行。但我们可以发现每次修改都只会改变一个结点的值,对于线段树来说,也就是只会有左儿子或者右儿子 ...
分类:
其他好文 时间:
2020-02-03 20:49:01
阅读次数:
70
PTA oj 不支持 gets() 函数wa了一发,粗略估计时间复杂度 O(n^2) 应该可以过 又wa 一发, 最后 O(n)时间做,多个 辅助空间的数组,空间复杂度多增加O(n),不过内存是足够的够,小问题。 #include <bits/stdc++.h> using namespace st ...
分类:
其他好文 时间:
2020-02-03 10:08:03
阅读次数:
99