摘要:
问题描述 给定一个整数类型的数组 ,请编写一个能够返回数组 “中心索引” 的方法。 我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。 如果数组不存在中心索引,那么我们应该返回 1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。 示例 1: 阅读全文
摘要:
问题描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 可能变为 )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O (log n ) 级别。 示例 1: 示例 2: 解决方案 阅读全文
摘要:
问题描述 给定一个只包括 ,`')' '{' '}' '[' ']'` 的字符串,判断字符串是否有效。 有效字符串需满足: 1. 左括号必须用相同类型的右括号闭合。 2. 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 解决方案 创建一个字典来映射括号的关系 利用栈的后进先出特性来 阅读全文
摘要:
问题描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) 将元素 x 推入栈中。 pop() 删除栈顶的元素。 top() 获取栈顶元素。 getMin() 检索栈中的最小元素。 示例: 解决方案 每一个元素的存储单位中同时保存了,到此节点最小的元 阅读全文
摘要:
问题描述 给定一个由 (陆地)和 (水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 示例 2: 解决方案 阅读全文
摘要:
问题描述 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前 阅读全文
摘要:
问题描述 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树: , 返回其层次遍历结果: 解决方案 queue的概念用deque来实现, 时间复杂为O(1)即可。 外围的While用来定义BFS的终止条件,所以我们最开始initialize queu 阅读全文
摘要:
问题描述 实现 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1: 示例 2: 解决方案 暴力解法 时间复杂度:O(N) 二分查找 时间复杂度:O(log(N)) 牛顿法 时间复杂度:O(log(N)) 阅读全文
摘要:
Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Windows 安装包下载地址为:。 如果打不开可以使用这个地址:。 各个系统对应的包名: | 操作系统 | 包名 | | | | | Windows | go1.4.windows amd64.msi 阅读全文