Espada

酸萝卜 ♂ 别吃

LeetCode 面试题 03.01. 三合一

Three in One LCCI

Problem Description三合一。描述如何只用一个数组来实现三个栈。 你应该实现: push(stackNum, value) pop(stackNum) isEmpty(stackNum) peek(stackNum) stackNum表示栈下标,value表示压入的值。 构造函数会传入一个stackSize参数,代表每个栈的大小。 e.g. 示例 1: 输入:12......

LeetCode #540 有序数组中的单一元素

#540 Single Element in a Sorted Array

Problem Description给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。 note您的方案应该在 $O(log n)$ 时间复杂度和 $O(1)$ 空间复杂度中运行。 e.g. 示例 1: 12输入: [1,1,2,3,3,4,4,8,8]输出: 2 示例 2: 12输入: [3,3,7,7,10,11,11]输出: 10 Solu......

LeetCode #892 三维形体的表面积

#892 Surface Area of 3D Shapes

Problem Description在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。 每个值 v = grid[i][j]表示 v 个正方体叠放在对应单元格 (i, j) 上。 请你返回最终形体的表面积。 note 1 <= N <= 50 0 <= grid[i][j] <= 50 e.g. 示例 1: 输入:[[2]] 输出:10 ......

LeetCode #703 数据流中的第K大元素

#703 Kth Largest Element in a Stream

Problem Description设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中的初始元素。每次调用 KthLargest.add,返回当前数据流中第K大的元素。 note你可以假设 nums 的长度≥ k-1 且k ≥ 1。 e.g.......

LeetCode #367 有效的完全平方数

#367 Valid Perfect Square

Problem Description给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。 note不要使用任何内置的库函数,如:sqrt。 e.g. 示例1: 输入:16 输出:True 示例2: 输入:14 输出:False Solution1. 暴力法可以无限优化的方法,其优化的核心就在于循环的起始和终止,效率很低不考......

LeetCode #225 用队列实现栈

#225 Implement Stack using Queues

Problem Description 使用队列实现栈的下列操作: push(x) — 元素 x 入栈 pop() — 移除栈顶元素 top() — 获取栈顶元素 empty() — 返回栈是否为空 note 你只能使用队列的基本操作— 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 你所使用的语言也许......

数据结构:Queue

虎头蛇尾

介绍先进先出,一种特殊的线性表,只允许表在一端进行获取操作,在另一端进行插入操作。当不存在元素时,则为空队列。自从 BlockingQueue(阻塞队列)问世以来,队列的地位得到极大地提升,在各种高并发编程的场景,经常被作为 Buffer(数据缓冲区)使用。 通常我们把LinkedList当成Queue来用,Queue类自身的一些方法: 方法 方法描述 boolean add......

LeetCode #169 多数元素

#169 Majority Element

Problem Description给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 e.g. 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 Solution1. Hash表首先最容易想到的,利用......

LeetCode #155 最小栈

#155 Min Stack

Problem Description设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 e.g.123456781. MinStack minStack = new MinStack();2......

数据结构:栈

先进后出

介绍last-in-first-out,后进先出是它最大的特点。class Stack<E> extends Vector<E>作为Vector的子类。 Vector底层使用数组存储数据,所以Stack也是如此。 Stack类自身的一些方法: 方法 方法描述 boolean empty() 测试堆栈是否为空。 Object peek() 查看堆栈顶......