2018年12月31日

摘要: 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false 说明:你可以假设字 阅读全文
posted @ 2018-12-31 19:42 kexinxin 阅读(116) 评论(0) 推荐(0)
摘要: 为运算表达式设计优先级 给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。 示例 1: 输入: "2-1-1" 输出: [0, 2] 解释: ((2-1)-1) = 0 (2-(1-1)) 阅读全文
posted @ 2018-12-31 19:40 kexinxin 阅读(425) 评论(0) 推荐(0)
摘要: 搜索二维矩阵II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 1 阅读全文
posted @ 2018-12-31 19:39 kexinxin 阅读(154) 评论(0) 推荐(0)
摘要: 滑动窗口最大值 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。 返回滑动窗口最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5 阅读全文
posted @ 2018-12-31 19:37 kexinxin 阅读(296) 评论(0) 推荐(0)
摘要: 删除链表中的节点 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 -- head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 -> 9 示例 1: 输入: head = [4,5,1,9], node = 5 输出: [4 阅读全文
posted @ 2018-12-31 19:36 kexinxin 阅读(70) 评论(0) 推荐(0)
摘要: 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。" 例如,给定如下二叉树: roo 阅读全文
posted @ 2018-12-31 19:35 kexinxin 阅读(171) 评论(0) 推荐(0)
摘要: 二叉搜索树的公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。" 例如,给定如下二叉搜索树: 阅读全文
posted @ 2018-12-31 19:33 kexinxin 阅读(153) 评论(0) 推荐(0)
摘要: 数字1的个数 给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。 示例: 输入: 13 输出: 6 解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。 1的总个数为1在1~n所有数中 个位数上有1的个数+十位数上有1的个数+...+亿位数上有1的个数 阅读全文
posted @ 2018-12-31 19:32 kexinxin 阅读(477) 评论(0) 推荐(0)
摘要: 二叉搜索树第k小的数 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 示例 1: 输入: root = [3,1,4,null,2], k = 1 输出: 1 示例 2: 输入: ro 阅读全文
posted @ 2018-12-31 19:29 kexinxin 阅读(256) 评论(0) 推荐(0)
摘要: 求众数II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。 示例 1: 输入: [3,2,3] 输出: [3] 示例 2: 输入: [1,1,1,3,3,2,2,2] 输出: [1,2] 摩尔投票法的基 阅读全文
posted @ 2018-12-31 19:28 kexinxin 阅读(219) 评论(0) 推荐(0)
摘要: 基本计算器II 实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。 示例 1: 输入: "3+2*2" 输出: 7 示例 2: 输入: " 3/2 " 输出: 1 示例 3: 输入: " 3+5 / 阅读全文
posted @ 2018-12-31 19:27 kexinxin 阅读(184) 评论(0) 推荐(0)
摘要: 基本计算器 实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。 示例 1: 输入: "1 + 1" 输出: 2 示例 2: 输入: " 2-1 + 2 " 输出: 3 示例 3: 输入: "(1+(4+5+2 阅读全文
posted @ 2018-12-31 19:26 kexinxin 阅读(233) 评论(0) 推荐(0)
摘要: 完全二叉树的节点个数 给出一个完全二叉树,求出该树的节点个数。 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 示例: 输入: 输出: 6 阅读全文
posted @ 2018-12-31 19:25 kexinxin 阅读(183) 评论(0) 推荐(0)
摘要: 最大的正方形 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 示例: 输入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 输出: 4 判断以某个点为正方形右下角时最大的正方形时,那它的上方,左方和左上方三个点也一定是某个正方形 阅读全文
posted @ 2018-12-31 19:24 kexinxin 阅读(172) 评论(0) 推荐(0)
摘要: 存在重复元素III 给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。 示例 1: 输入: nums = [1,2,3,1], k= 3, t = 0 输出: true 示 阅读全文
posted @ 2018-12-31 19:23 kexinxin 阅读(285) 评论(0) 推荐(0)
摘要: 天际线问题 城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。现在,假设您获得了城市风光照片(图A)上显示的所有建筑物的位置和高度,请编写一个程序以输出由这些建筑物形成的天际线(图B)。 每个建筑物的几何信息用三元组 [Li,Ri,Hi] 表示,其中 Li 和 Ri 分别是第 i 座建 阅读全文
posted @ 2018-12-31 19:20 kexinxin 阅读(287) 评论(0) 推荐(0)
摘要: 数组中的第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 阅读全文
posted @ 2018-12-31 19:19 kexinxin 阅读(108) 评论(0) 推荐(0)
摘要: 最短回文串 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。 示例 1: 输入: "aacecaaa" 输出: "aaacecaaa" 示例 2: 输入: "abcd" 输出: "dcbabcd" 这个题目是在字符串前面加字符构成一个最短 阅读全文
posted @ 2018-12-31 19:18 kexinxin 阅读(189) 评论(0) 推荐(0)
摘要: 打家劫舍II 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算 阅读全文
posted @ 2018-12-31 19:17 kexinxin 阅读(234) 评论(0) 推荐(0)
摘要: 单词搜索II 给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。 示例: 输入: wo 阅读全文
posted @ 2018-12-31 19:16 kexinxin 阅读(305) 评论(0) 推荐(0)
摘要: 添加与搜索单词 设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 . 或 a-z 。 . 可以表示任何一个字母。 示例: addWord("bad") addWo 阅读全文
posted @ 2018-12-31 19:15 kexinxin 阅读(171) 评论(0) 推荐(0)
摘要: 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。 示例: 输入: s = 7, nums = [2,3,1,2,4,3] 输出: 2 解释: 子数组 [4,3] 是该条件下的长度最小 阅读全文
posted @ 2018-12-31 19:13 kexinxin 阅读(197) 评论(0) 推荐(0)
摘要: 实现前缀树 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。 示例: Trie trie = new Trie(); trie.insert("apple"); trie.search("apple"); // 返回 true trie.s 阅读全文
posted @ 2018-12-31 19:12 kexinxin 阅读(139) 评论(0) 推荐(0)
摘要: 课程表 现在你总共有 n 门课需要选,记为 0 到 n-1。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习? 示例 1: 输入: 2, [[1,0]] 输 阅读全文
posted @ 2018-12-31 19:10 kexinxin 阅读(182) 评论(0) 推荐(0)
摘要: 反转链表 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 链表的翻转是程序员面试中出现频度最高的问题之一,常见的解决方法分为递归和迭代两种。最近在复习的时候,发现网上的资料都只告诉了怎么做,但是根本没有好好介绍两种方法的实现过 阅读全文
posted @ 2018-12-31 19:09 kexinxin 阅读(136) 评论(0) 推荐(0)
摘要: 计数质数 统计所有小于非负整数 n 的质数的数量。 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 比计算少n中素数的个数。 素数又称质数,是指仅仅能被1和它自身相除的自然数。 须要注意的是1既不是素数也不是合数。 2是最小的素数。 使 阅读全文
posted @ 2018-12-31 19:08 kexinxin 阅读(148) 评论(0) 推荐(0)
摘要: 数字范围按位与 给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。 示例 1: 输入: [5,7] 输出: 4 示例 2: 输入: [0,1] 输出: 0 我们就会知道与运算的一条性质:n & (n - 1) 可 阅读全文
posted @ 2018-12-31 19:07 kexinxin 阅读(89) 评论(0) 推荐(0)
摘要: 颠倒二进制位 颠倒给定的 32 位无符号整数的二进制位。 示例: 输入: 43261596 输出: 964176192 解释: 43261596 的二进制表示形式为 00000010100101000001111010011100 , 返回 964176192,其二进制表示形式为 001110010 阅读全文
posted @ 2018-12-31 19:05 kexinxin 阅读(203) 评论(0) 推荐(0)
摘要: 买卖股票的最佳时机IV 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。 注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [2,4,1], k = 2 输出: 2 解 阅读全文
posted @ 2018-12-31 19:04 kexinxin 阅读(140) 评论(0) 推荐(0)
摘要: 重复的DNA序列 所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:"ACGAATTCCG"。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。 编写一个函数来查找 DNA 分子中所有出现超多一次的10个字母长的序列(子串)。 示例: 输入: s = "AAA 阅读全文
posted @ 2018-12-31 19:03 kexinxin 阅读(250) 评论(0) 推荐(0)
摘要: 最大数 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 阅读全文
posted @ 2018-12-31 18:59 kexinxin 阅读(112) 评论(0) 推荐(0)
摘要: 地下城游戏 一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。 有些房 阅读全文
posted @ 2018-12-31 18:58 kexinxin 阅读(155) 评论(0) 推荐(0)
摘要: 二叉搜索树迭代器 实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 注意:next() 和hasNext() 操作的时间复杂度是O(1),并使用 O(h) 内存,其中 h 是树的高度。 维护一个栈,先将根结点的左子树全部压栈 阅读全文
posted @ 2018-12-31 18:57 kexinxin 阅读(101) 评论(0) 推荐(0)
摘要: 阶乘后的零 给定一个整数 n,返回 n! 结果尾数中零的数量。 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。 示例 2: 输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零. 阅读全文
posted @ 2018-12-31 18:55 kexinxin 阅读(121) 评论(0) 推荐(0)
摘要: 分数到小数 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。 如果小数部分为循环小数,则将循环的部分括在括号内。 示例 1: 输入: numerator = 1, denominator = 2 输出: "0.5" 示例 2: 输入: nu 阅读全文
posted @ 2018-12-31 18:54 kexinxin 阅读(233) 评论(0) 推荐(0)
摘要: 比较版本号 比较两个版本号 version1 和 version2。如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。 你可以假设版本字符串非空,并且只包含数字和 . 字符。 . 字符不代表小数点,而是用于分隔数字序 阅读全文
posted @ 2018-12-31 18:53 kexinxin 阅读(131) 评论(0) 推荐(0)
摘要: 寻找峰值 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞。 示例 1: 输入: 阅读全文
posted @ 2018-12-31 18:51 kexinxin 阅读(143) 评论(0) 推荐(0)

导航