尺取法:顾名思义,像尺子一样取一段,借用挑战书上面的话说,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点以得出答案。之所以需要掌握这个技巧,是因为尺取法比直接暴力枚举区间效率高很多,尤其是数据量大的 使用尺取法时应清楚以下四点: 1、 什么情况下能使 ...
分类:
其他好文 时间:
2018-04-29 21:13:57
阅读次数:
171
1.ArrayList源码和多线程安全问题分析 在分析ArrayList线程安全问题之前,我们线对此类的源码进行分析,找出可能出现线程安全问题的地方,然后代码进行验证和分析。 1.1 数据结构 ArrayList内部是使用数组保存元素的,数据定义如下: transient Object[] elem ...
分类:
编程语言 时间:
2018-04-27 02:19:45
阅读次数:
273
一、基本操作: 1、Find:当且仅当两个元素属于相同的集合时,返回相同的名字 2、Union:将两个不相交的集合合并为一个不想交的集合。 应用:在等价关系中,判断两个元素之间是否有关系或者添加等价关系。 二、基本数据结构 1、Quick-Find实现 采用一个数组保存每个等价类的名字,这种实现下F ...
分类:
其他好文 时间:
2018-04-24 22:25:35
阅读次数:
213
20172313 2017 2018 2 《程序设计与数据结构》第六周学习总结 教材学习内容总结 1. 学习了如何声明和使用一个数组。 2. 学习了要进行边界检查,确保只因用数组有效范围之内的索引值。 3. 学习了数组不同的声明方式和初始化方式。 4. 学习了当数组保存对象时的使用。 5. 初步学习 ...
分类:
其他好文 时间:
2018-04-15 21:52:50
阅读次数:
161
题目如下:解题思路:本题的关键在于题目限定了是连续的数组,我们用一个dp数组保存第i位到数组末位的和。例如nums = [1,1,1],那么dp = [3,2,1], dp[i]表示nums[i]+nums[i+1] +...+nums[len(nums)-1],有了这一个dp数组后,我们很容易就可 ...
分类:
其他好文 时间:
2018-04-14 12:35:50
阅读次数:
155
这一章比较简单,内容也比较少。而且对于文件的读写,还是使用pandas比较好。numpy主要是读写文本数据和二进制数据的。 将数组以二进制的格式保存到硬盘上 主要的函数有numpy.save和numpy.load。默认情况下,数组是以未压缩的二进制保存为.npy的文件。 将多个数组保存到一个压缩文件 ...
分类:
编程语言 时间:
2018-04-06 15:17:26
阅读次数:
335
双数组Trie树,其实就是用两个一维数组来表示Trie树这种数据结构。 一个数组称为BASE,另一个数组为CHECK。转移条件如下: 对于状态s,接收字符c,转移到状态t BASE[s]+c=t CHECK[t]=BASE[s] 1. BASE数组保存结点的基地址 2. CHECK数组标识结点的前驱 ...
分类:
编程语言 时间:
2018-03-11 20:59:30
阅读次数:
167
一、概述 散列算法有两个主要的实现方式:开散列和闭散列,HashMap采用开散列实现。 HashMap中,键值对(key-value)在内部是以Entry(HashMap中的静态内部类)实例的方式存储,散列表table是一个Entry数组,保存Entry实例。 对于冲突的情况,在开散列中,如果若干个 ...
分类:
其他好文 时间:
2018-02-26 13:27:51
阅读次数:
201
点分治 跟路径有关的立马想到了点分治 自然我们需要统计每条路径的答案,根据点分治的过程,考虑每条路径,我们希望当前路径上的点作为最小值 那么我们用树状数组保存之前每个最小值对应的最长长度,跑两遍即可 #include<bits/stdc++.h> using namespace std; const ...
分类:
其他好文 时间:
2018-02-24 23:08:14
阅读次数:
232
说起来学了很久的后缀数组了 思想还是很容易明白的 最大的问题就是 代码看不懂 然后在不断模拟研究的过程中 终于弄清楚了一点 就决定写下来了 不然又会忘的QAQ 以下是代码 ps:首先要弄懂基数排序 定义:c[ ]数组 : 基数排序的桶 x[ ]数组:类似于rank数组,保存当前排序到的以每个位置开始 ...
分类:
编程语言 时间:
2018-02-12 20:09:11
阅读次数:
164