- 博客(20)
- 资源 (12)
- 收藏
- 关注
原创 集合-HashSet源码详解
特点:如果对HashMap理解不深,请先查阅 HashMap源码详解 ,否则会对本片博客理解有一定困难;底层数据结构:HashSet底层封装的是HashMap,所以元素添加会放到HashMap的key中,value值使用new Object对象作为value;所以HashSet和HashMap的所具有的特点是类似的; 数据不能重复; 可以存储null值; 数据不能保证插入有序;...
2019-02-28 15:16:18 818
原创 集合-LinkedHashMap源码详解(特有方法解析)以及HashMap与LinkedHashMap的不同
特点:底层数据结构:数组加链表用来存储数据; header双向链表用来实现数据插入有序或者访问有序;继承关系:public class LinkedHashMap<K,V> extends HashMap<K,V> //继承了HashMap implements Map<K,V>//实现了Map接口{
2019-02-27 12:45:51 1104
原创 集合-HashTable源码详解(增删改查)以及HashMap与HashTable的异同点
特点: 底层数据结构:链表加数组; null值:key,value均不能为null; key重复性:key不能重复; 有序性:不能保证插入有序; 是线程安全的增长方式 :原数组长度二倍+1的方式增长继承关系:public class Hashtable<K,V> extends Dictionary<K,V&am
2019-02-26 12:52:29 552
原创 集合-HashMap源码详解(增删改查)
底层数据结构:HashMap底层的实现是数组+链表实现:数组中存储的是一个个entry实体,hash到同一个索引位置的数据通过链表链接起来;基本属性: transient:和序列化相关的关键字static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16//哈希表中数组默认初始值大小为16static fin...
2019-02-24 12:54:51 1103
原创 集合- Map/HashMap 详解
Map接口: 数据结构:哈希表; 哈希表:通过关键码来映射到值的一个数据结构; 哈希函数:键与值映射的一个映射关系;哈希函数寻址方法:有多种,不局限于这两种 直接寻址法:f(X)=kx+b(k,b都是常数)f(x)为插入位置; 除留余数法:f(x)=x%k (k<=m ,m为存储位置长度);哈希冲突:m!=n =>> f(m)==f(n);也
2019-02-23 11:37:55 231
原创 集合 - LinkedList自定义类实现以及LinkedList自定义迭代器(Iterator)实现
Iterator迭代器实现原理参照此篇博客请点击package collection;import java.util.Iterator;/** * @Created with IntelliJ IDEA * @Description: * @Package: collection * @author: FLy-Fly-Zhang * @Date: 2019/2/20 * @Ti...
2019-02-22 14:31:30 720
原创 随笔-用ArrayList实现求交集/并集/差集
题目:a {1,2,3,4} ---- b {3,4,5,6} 并集:{1,2,3,3,4,4,5,6} 交集{3,4} 差集:a与b的差集{1,2}public class ArrayListDemo { /* * @Description : 本质为两个集合的合并 * @param arrayList1 * ...
2019-02-21 20:02:08 1448 1
原创 集合-ArrayList源码分析以及自定义ArrayList集合类实现
ArrayList特点: 重复性:数据可以重复 null值:可以有null值存在 有序性:能保证数据插入有序常用方法介绍: int size(): 集合中存储元素的个数; boolean isEmpty():判断当前元素是否为空,返回值为boolean类型; boolean contains(Object o): 判断当前集合是否包含Object对象; Iterator ...
2019-02-21 17:27:12 363
原创 集合- Iterator(迭代器)源码详解以及自定义迭代器实现
迭代器:是一种设计模式,提供了一种方法,来对集合,容器进行遍历的方式,不需要关注底层数据结构和数据类型,来达到底层和上层遍历解耦的目的。集合如何获得一个迭代器:集合要具有iterator 方法需要实现iterable接口,要自定义一个迭代器内部类,类需要实现Iterator接口; iterator方法: public Iterator<E> iterator() { ...
2019-02-19 17:42:57 1018
原创 随笔-pow(x,n)
题目:实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 32...
2019-02-16 16:48:10 219
原创 随笔-通配符匹配
题目:给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = “aa”p = “a”输出:...
2019-02-15 01:41:35 316
原创 随笔-字符串相乘(按位相乘法)
题目:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数...
2019-02-14 00:50:13 2230 1
原创 随笔- 缺失的第一个正数(O(n)解法)
题目:给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。O(n)解法思路:如果数组正好是1-nums.length的正整数,那么最小遗漏的正整数就是数组长...
2019-02-12 01:13:55 233
原创 随笔-下一个排列(二分查找实现)
题目:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1思路:我们应该清楚的是,如果相邻的元素,左边大于等于右...
2019-02-11 01:47:38 199
原创 随笔-每k个节点反转链表(高效解法)
题目:给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1...
2019-02-08 23:04:42 5061 1
原创 随笔-给定一个链表,两两交换其中相邻的节点
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.思路:这是一个简单的结点交换问题,唯一要注意的是首次交换后的头结点也进行了变化,所以我们需要单独进行处理;还有就是关于循环的限制条件,只要余下链表有两个以上的结...
2019-02-08 20:51:01 3045
原创 随笔-合并K个排序链表
题目:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6思路:创建一个新表头,然后将所有链表元素按照大小加入到新的链表中;代码实现:/** * Definition for s...
2019-02-03 00:07:09 113
原创 随笔- 最接近的三数之和(Leetcode16)
题目:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).思路:三个数首先用一个数确定基准,采用双...
2019-02-02 00:33:49 179
原创 随笔-最长回文子串(Longest Palindromic Substring)——三种时间复杂度的解法
题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”方法一:暴力解法;采用滑动窗口,先对最长的字符子串进行判断,下来对长度减一的几条子串进行判断;依此类推进行比对;时间复杂度:O(n3)代码实现:cl...
2019-02-01 01:25:23 2193
双矩形孔菲涅耳衍射
2019-04-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人