- 博客(395)
- 资源 (17)
- 收藏
- 关注
原创 ArrayDeque源码解析
1、概述ArrayDeque 是 Deque 接口的变长数组实现,它没有容量限制,会根据需要来扩容。它不是线程安全的,缺乏外部的同步机制,导致它不支持多线程的并发访问。Null 对象是不许存在的,这个类很可能比 Stack 实现的栈和 LinkedList 实现的队列更快。其绝大多数操作运行在常数时间,除了一些需要线性时间执行的方法:remove、removeFirstOccurrence、removeLastOccurrence、contains、iterator.remove()和批量操作。它继承
2020-05-24 23:32:37 473
原创 LinkedList
1、概述LinkedList 是 List 和 Deque 接口的双向链表实现,所有实现都不是同步的,非线程安全。它的插入、删除操作比 ArrayList 更高效,随机访问的效率相比较更差。2、继承类实现接口public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serial
2020-05-13 01:12:38 412
原创 ArrayList源码解析
1、概述ArrayList 是 List 接口的动态可变长数组实现,它实现了 List 的所有方法并允许包括 null 在内的所有元素。为了实现这些方法,ArrayList 提供方法去操作被用来真正存储元素的数组的大小。ArrayList 类基本和 Vector 类等同,除了它不是线程安全的。每个 ArrayList 都有一个容量,它指的是用来存储元素的数组的大小,总是大于等于它的元素个数。随...
2020-03-30 23:08:40 362
原创 字节序
1.字节序字节序,又称端序或尾序,指的是多字节数据在内存中的存放顺序。例如一个int型变量x占用4个字节,假设它的起始地址&x为0x10,那么x将会被存储在0x10、0x11、0x12和0x13位置上。在用C++写的客户端和Java写的服务端的通信时,发现数据通过TCP连接传输后收到的与发送的不一致,所以要引入大端和小端的概念。2.大端和小端计算机有两种储存数据的方式:大端字节序...
2020-03-29 23:49:24 3664
原创 Collection和Map
1、概念在Java当中,如果有一个类专门用来存放其它类的对象,这个类就叫做容器,也叫做集合,集合就是将若干性质相同或相近的类对象组合在一起而形成的一个整体。相较于数组,集合的容量是可以自动调节的。2、CollectionCollection 接口是 Set、Queue 和 List 的父接口:Set 代表无序、无重复的集合Queue 代表队列List 代表有序、可重复的集合...
2020-03-29 23:43:21 239
原创 leetcode191. 位1的个数
https://leetcode-cn.com/problems/number-of-1-bits/**编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共...
2020-03-11 00:54:42 918
原创 leetcode211. 添加与搜索单词 - 数据结构设计
设计一个支持以下两种操作的数据结构:void addWord(word)bool search(word)search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 . 或 a-z 。 . 可以表示任何一个字母。参考leetcode208. 实现 Trie (前缀树):class WordDictionary: def __init__(self): ...
2019-08-31 01:27:49 233
原创 leetcode461. 汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0)class Solution: def hammingDistance(self, x: int, y: ...
2019-07-23 14:29:04 199
原创 leetcode210. 课程表 II
现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。示例 1:输入: 2, [[1,0]]输出: [0...
2019-06-14 09:41:35 275
原创 leetcode209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。进阶:如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。...
2019-06-11 13:57:50 727
原创 leetcode207. 课程表
现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]输出: true解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。示例 ...
2019-06-10 15:06:04 220
原创 leetcode205. 同构字符串
给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = “egg”, t = “add”输出: true示例 2:输入: s = “foo”, t = “bar”输出: false示...
2019-06-06 13:54:15 140
原创 leetcode204. 计数质数
统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。厄拉多赛筛法,先找到不超过根号n的所有素数,再把这些素数的所有倍数去掉:class Solution: def countPrimes(self, n: int) -> int: # 厄拉多赛筛法,先找到不超过根号...
2019-06-05 14:27:20 276
原创 leetcode201. 数字范围按位与
给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0就是找m和n的二进制公共前缀:class Solution: def rangeBitwiseAnd(self, m: int, n: int)...
2019-06-04 17:06:07 324
原创 leetcode217. 存在重复元素
给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: trueclass Solution: def cont...
2019-06-04 10:50:43 181
原创 leetcode216. 组合总和III
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]典型的回溯题目,注意初始判断和剪枝:cl...
2019-06-04 10:44:43 222
原创 leetcode215. 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。借助快排partition的思想:cl...
2019-06-03 20:20:05 207
原创 leetcode200. 岛屿的个数
给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3对每一个为1的位置四个方向搜索,注意将搜过的地方置为0:...
2019-06-03 16:03:43 159
原创 leetcode199. 二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]层序遍历:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val =...
2019-05-22 11:06:58 203
原创 leetcode189. 旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99] 和 k...
2019-05-21 16:06:34 162
原创 leetcode187. 重复的DNA序列
所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来查找 DNA 分子中所有出现超多一次的10个字母长的序列(子串)。示例:输入: s = “AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT”输出: [“AAAAACCCCC”, “CCCCCAAA...
2019-05-21 09:13:19 204
原创 leetcode172. 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。最终求的是所有数中5的个数:class Solution: def trailingZeroes(self, n: int...
2019-05-20 14:30:44 160
原创 leetcode179. 最大数
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例 2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。最重要的是写出比较函数:class Solution: def largestNumber(self, nums: List[int]) -...
2019-05-17 16:26:48 327
原创 leetcode174. 地下城游戏
一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间...
2019-05-17 09:19:15 169
原创 leetcode173. 二叉搜索树迭代器
实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下一个最小的数。示例:BSTIterator iterator = new BSTIterator(root);iterator.next(); // 返回 3iterator.next(); // 返回 7iterator.hasNext(); // 返回 true...
2019-05-16 14:45:37 338
原创 leetcode171. Excel表列序号
给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3…Z -> 26AA -> 27AB -> 28…示例 1:输入: “A”输出: 1示例 2:输入: “AB”输出: 28示例 3:输入: “ZY”输出: 70126进制:class Solution: def titl...
2019-05-16 12:54:49 161
原创 leetcode169. 求众数
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2既然总是存在就不用做再次判断了:class Solution: def majorityElement(self, nums...
2019-05-15 10:20:41 130
原创 leetcode168. Excel表列名称
给定一个正整数,返回它在 Excel 表中相对应的列名称。例如,1 -> A2 -> B3 -> C…26 -> Z27 -> AA28 -> AB…示例 1:输入: 1输出: “A”示例 2:输入: 28输出: “AB”示例 3:输入: 701输出: "ZY"26进制,注意是从1开始到26,每次n要减去一才能从A开始:c...
2019-05-14 15:29:03 144
原创 leetcode166. 分数到小数
给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。示例 1:输入: numerator = 1, denominator = 2输出: “0.5”示例 2:输入: numerator = 2, denominator = 1输出: “2”示例 3:输入: numerator...
2019-05-14 09:29:55 217
原创 leetcode414. 第三大的数
给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。示例 1:输入: [3, 2, 1]输出: 1解释: 第三大的数是 1.示例 2:输入: [1, 2]输出: 2解释: 第三大的数不存在, 所以返回最大的数 2 .示例 3:输入: [2, 2, 3, 1]输出: 1解释: 注意,要求返回第三大的数,是指第三大且唯一...
2019-05-13 14:51:48 123
原创 leetcode447. 回旋镖的数量
给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。找到所有回旋镖的数量。你可以假设 n 最大为 500,所有点的坐标在闭区间 [-10000, 10000] 中。示例:输入:[[0,0],[1,0],[2,0]]输出:2解释:两个回旋镖为 [[1,0],[0,0],[2,...
2019-05-13 11:31:59 311
原创 leetcode826. 安排工作以达到最大收益
有一些工作:difficulty[i] 表示第i个工作的难度,profit[i]表示第i个工作的收益。现在我们有一些工人。worker[i]是第i个工人的能力,即该工人只能完成难度小于等于worker[i]的工作。每一个工人都最多只能安排一个工作,但是一个工作可以完成多次。举个例子,如果3个工人都尝试完成一份报酬为1的同样工作,那么总收益为 $3。如果一个工人不能完成任何工作,他的收益为 $...
2019-05-13 10:58:45 579
原创 leetcode165. 比较版本号
leetcode165. 比较版本号比较两个版本号 version1 和 version2。如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。你可以假设版本字符串非空,并且只包含数字和 . 字符。. 字符不代表小数点,而是用于分隔数字序列。例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个小版本。你可以假设...
2019-04-22 10:37:15 580
原创 概率生成器
用一个[1 2 3 4 5]的随机生成器生成一个[1 2 3 4 5 6 7]的随机生成器这种题目的通解就是random2 = (random1-1)*len(random1)+random1,这样生成等概率的数,然后去掉后几种情况,构成len(random2)的倍数。上面的数是1-25这25个数,那就取1-21这21个数就好。...
2019-04-20 22:05:48 2949
原创 leetcode164. 最大间距
给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例 1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例 2:输入: [10]输出: 0解释: 数组元素个数小于 2,因此返回 0。说明:你可以假设数组中所有元素都是非负...
2019-04-20 14:37:42 454
原创 leetcode162. 寻找峰值
峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。示例 2...
2019-04-19 15:18:43 167
原创 leetcode208. 实现 Trie (前缀树)
实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert(“apple”);trie.search(“apple”); // 返回 truetrie.search(“app”); // 返回 falsetrie.startsWith(“app”); ...
2019-04-18 14:39:25 320
原创 编程题:最长公共子序列
也就是LCS问题,常规的动态规划题目,状态转移矩阵见下图:代码呼之欲出:class Solution: def lsc(self, a, b): len_a, len_b = len(a), len(b) # dp[i][j]表示a的前i个数和b的前j个数构成的最长公共子串长度 dp = [[0] * (len_b + 1) for _...
2019-04-18 10:36:19 490
原创 leetcode160. 相交链表
leetcode160. 相交链表编写一个程序,找到两个单链表相交的起始节点。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。参考剑指offer36.两个链表的第一个公共结点:# Definition for singly-linked list.# class ListNode(obje...
2019-04-18 09:11:53 155
cs231n_2017_lecture16.pdf
2018-01-24
cs231n_2017_lecture15.pdf
2018-01-24
cs231n_2017_lecture14.pdf
2018-01-24
cs231n_2017_lecture12.pdf
2018-01-20
cs231n_2017_lecture2.pdf
2018-01-20
10Algorithms-08.pdf
2018-01-20
神经网络与自主车:从1995到2015.pdf
2018-01-20
分类和回归树.pdf
2018-01-20
Big-Data-in-Big-Companies(SAS大数据报告).pdf
2018-01-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人