集合-HashSet源码详解

特点: 如果对HashMap理解不深,请先查阅 HashMap源码详解 ,否则会对本片博客理解有一定困难; 底层数据结构:HashSet底层封装的是HashMap,所以元素添加会放到HashMap的key中,value值使用new Object对象作为value;所以HashSet和HashM...

2019-02-28 15:16:18

阅读数 54

评论数 0

集合-LinkedHashMap源码详解(特有方法解析)以及HashMap与LinkedHashMap的不同

特点: 底层数据结构:数组加链表用来存储数据; header双向链表用来实现数据插入有序或者访问有序; 继承关系: public class LinkedHashMap<K,V> extends HashMa...

2019-02-27 12:45:51

阅读数 130

评论数 0

集合-HashTable源码详解(增删改查)以及HashMap与HashTable的异同点

特点: 底层数据结构:链表加数组; null值:key,value均不能为null; key重复性:key不能重复; 有序性:不能保证插入有序; 是线程安全的 增长方式 :原数组长度二倍+1的方式增长 继承关系: public class Hashtable&...

2019-02-26 12:52:29

阅读数 70

评论数 0

集合-HashMap源码详解(增删改查)

底层数据结构: HashMap底层的实现是数组+链表实现:数组中存储的是一个个entry实体,hash到同一个索引位置的数据通过链表链接起来; 基本属性: transient:和序列化相关的关键字 static final int DEFAULT_INITIAL_CAPACITY = 1 &...

2019-02-24 12:54:51

阅读数 75

评论数 0

集合- Map/HashMap 详解

Map接口: 数据结构:哈希表; 哈希表:通过关键码来映射到值的一个数据结构; 哈希函数:键与值映射的一个映射关系; 哈希函数寻址方法:有多种,不局限于这两种 直接寻址法:f(X)=kx+b(k,b都是常数)f(x)为插入位置; 除留余数法:f(x)=x%k (k&amp...

2019-02-23 11:37:55

阅读数 38

评论数 0

集合 - LinkedList自定义类实现以及LinkedList自定义迭代器(Iterator)实现

Iterator迭代器实现原理参照此篇博客请点击 package collection; import java.util.Iterator; /** * @Created with IntelliJ IDEA * @Description: * @Package: collection ...

2019-02-22 14:31:30

阅读数 83

评论数 0

随笔-用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 : ...

2019-02-21 20:02:08

阅读数 158

评论数 0

集合-ArrayList源码分析以及自定义ArrayList集合类实现

ArrayList特点: 重复性:数据可以重复 null值:可以有null值存在 有序性:能保证数据插入有序 常用方法介绍: int size(): 集合中存储元素的个数; boolean isEmpty():判断当前元素是否为空,返回值为boolean类型; boolean c...

2019-02-21 17:27:12

阅读数 75

评论数 0

集合- Iterator(迭代器)源码详解以及自定义迭代器实现

迭代器:是一种设计模式,提供了一种方法,来对集合,容器进行遍历的方式,不需要关注底层数据结构和数据类型,来达到底层和上层遍历解耦的目的。 集合如何获得一个迭代器:集合要具有iterator 方法需要实现iterable接口,要自定义一个迭代器内部类,类需要实现Iterator接口; ite...

2019-02-19 17:42:57

阅读数 206

评论数 0

随笔-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/...

2019-02-16 16:48:10

阅读数 53

评论数 0

随笔-通配符匹配

题目:给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。 ‘?’ 可以匹配任何单个字符。 ‘*’ 可以匹配任意字符串(包括空字符串)。 两个字符串完全匹配才算匹配成功。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a...

2019-02-15 01:41:35

阅读数 22

评论数 0

随笔-字符串相乘(按位相乘法)

题目:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 = “2”, num2 = “3” 输出: “6” 示例 2: 输入: num1 = “123”, num2 = “456” 输出:...

2019-02-14 00:50:13

阅读数 227

评论数 0

随笔- 缺失的第一个正数(O(n)解法)

题目:给定一个未排序的整数数组,找出其中没有出现的最小的正整数。 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9,11,12] 输出: 1 说明: 你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。...

2019-02-12 01:13:55

阅读数 43

评论数 0

随笔-下一个排列(二分查找实现)

题目:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。 1,2,3 → 1,3,2 3,2,...

2019-02-11 01:47:38

阅读数 24

评论数 0

小程序-平安夜(圣诞,告白,过节)程序员祝福代码

许愿墙源码

2019-02-08 23:35:28

阅读数 372

评论数 0

随笔-每k个节点反转链表(高效解法)

题目:给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 示例 : 给定这个链表:1->2->3->4-&a...

2019-02-08 23:04:42

阅读数 493

评论数 1

随笔-给定一个链表,两两交换其中相邻的节点

题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1-&g...

2019-02-08 20:51:01

阅读数 296

评论数 0

随笔-合并K个排序链表

题目:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1-...

2019-02-03 00:07:09

阅读数 24

评论数 0

随笔- 最接近的三数之和(Leetcode16)

题目:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最...

2019-02-02 00:33:49

阅读数 36

评论数 0

随笔-最长回文子串(Longest Palindromic Substring)——三种时间复杂度的解法

题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 示例 2: 输入: “cbbd” 输出: “bb” 方法一:暴力解法; 采用滑动窗口,先对最长的字符子串进...

2019-02-01 01:25:23

阅读数 112

评论数 0

提示
确定要删除当前文章?
取消 删除