HashMap 源码精读笔记

HashMap 类属性

HashMap 继承于 AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口,是非常常用的一个集合类,同时在 JDK 1.7 和 JDK 1.8 版本的底层实现上也有很大区别。

Read more
ArrayList 源码精读笔记
ArrayList 类属性ArrayList 实现了 RandomAccess 接口,RandomAccess 接口没有内容只是一个标记,对于实现了 RandomAccess 接口的类支持通过索引/下标访问。 对于实现了 RandomAccess 接口的类使用 for 循环遍历效率高,没有 ...
Read more
剑指 Offer 63. 股票的最大利润
题目描述假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 示例 1: 1234输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...
Read more
剑指 Offer 60. n个骰子的点数
题目描述把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。 示例 1: 12输入: 1输出: [0.16667,0.16667,0.166 ...
Read more
剑指 Offer 47. 礼物的最大价值
题目描述在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 示例 1: 12345678输入: [  ...
Read more
剑指 Offer 46. 把数字翻译成字符串
题目描述给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。 示例 1: 123输入: 12258输出: 5解释: 1 ...
Read more
剑指 Offer 42. 连续子数组的最大和
题目描述输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 123输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 提示: ...
Read more
剑指 Offer 19. 正则表达式匹配
题目描述请实现一个函数用来匹配包含$’. ‘$和$’‘$的正则表达式。模式中的字符$’.’$表示任意一个字符,而$’‘$表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串$”aaa”$与模式$”a.a”$和$”abaca”$匹配,但与$”aa.a” ...
Read more
剑指 Offer 38. 字符串的排列
题目描述输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例: 12输入:s = "abc"输出:["abc","acb","bac","bca ...
Read more
剑指 Offer 13. 机器人的运动范围
题目描述地上有一个m行n列的方格,从坐标 $[0,0]$ 到坐标 $[m-1,n-1]$ 。一个机器人从坐标 $[0, 0]$ 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 3 ...
Read more