摘要: 广度优先搜索一层一层地进行遍历,每层遍历都是以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。 第一层: 0 -> {6,2,1,5} 第二层: 6 -> {4} 2 -> {} 1 -> {} 5 -> {3} 第三层: 4 -> {} 3 -> 阅读全文
posted @ 2020-07-19 16:44 _未知的暖意 阅读(215) 评论(0) 推荐(0)
摘要: 在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1)。 一条从左上角到右下角、长度为 k 的畅通路径,由满足下述条件的单元格 C_1, C_2, ..., C_k 组成: 相邻单元格 C_i 和 C_{i+1} 在八个方向之一上连通(此时,C_i 和 C_{i+1} 不同且 阅读全文
posted @ 2020-07-19 16:41 _未知的暖意 阅读(409) 评论(0) 推荐(1)
摘要: 假设有16枚硬币,其中一枚是假币,并且已知假币的重量要比真的硬币的重量要轻一点。 那么怎么样才能找出来这个假币呢? 这里用到的就是分治的思想 (1)先将这些硬币分成数量相同的两堆,称重,轻的就是有假币的 (2)将有假币的一堆再拆分成数量相同的两堆 (3)重复上面的步骤 (4)最终会剩下两枚,其中一枚 阅读全文
posted @ 2020-07-19 14:52 _未知的暖意 阅读(200) 评论(0) 推荐(0)
摘要: 给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 。 示例: 输入:3 输出: [ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3] ] 解释: 以上的输出对应以下 5 种不同结 阅读全文
posted @ 2020-07-19 14:36 _未知的暖意 阅读(154) 评论(0) 推荐(0)
摘要: 给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。 示例 1: 输入: "2-1-1" 输出: [0, 2] 解释: ((2-1)-1) = 0 (2-(1-1)) = 2 示例 2: 输入 阅读全文
posted @ 2020-07-19 14:00 _未知的暖意 阅读(181) 评论(0) 推荐(0)
摘要: 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 阅读全文
posted @ 2020-07-19 13:51 _未知的暖意 阅读(183) 评论(0) 推荐(0)
摘要: 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 你可以假设数组中不存在重复元素。 示例 1: 输入: [3,4,5,1,2] 输出: 1 示例 2: 输入: [4,5,6, 阅读全文
posted @ 2020-07-19 13:39 _未知的暖意 阅读(136) 评论(0) 推荐(0)
摘要: 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。 你可以通过调用 bool 阅读全文
posted @ 2020-07-19 13:32 _未知的暖意 阅读(100) 评论(0) 推荐(0)
摘要: 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。 示例 1: 输入: [1,1,2,3,3,4,4,8,8] 输出: 2 示例 2: 输入: [3,3,7,7,10,11,11] 输出: 10 注意: 您的方案应该在 O(log n)时间复杂度和 O(1)空间 阅读全文
posted @ 2020-07-19 13:29 _未知的暖意 阅读(148) 评论(0) 推荐(0)
摘要: 给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。 在比较时,字母是依序循环出现的。举个例子: 如果目标字母 target = 'z' 并且字符列表为 letters = ['a', 'b'],则答 阅读全文
posted @ 2020-07-19 11:59 _未知的暖意 阅读(185) 评论(0) 推荐(0)
摘要: 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1: 输入: 4 输出: 2 示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小 阅读全文
posted @ 2020-07-19 11:55 _未知的暖意 阅读(145) 评论(0) 推荐(0)
摘要: 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。 示例 1: 输入:S = "ababcbacadefegdehijhklij" 输出:[9,7,8] 解释: 划分结果为 "ababcbaca", "de 阅读全文
posted @ 2020-07-19 11:32 _未知的暖意 阅读(231) 评论(0) 推荐(0)
摘要: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使 阅读全文
posted @ 2020-07-19 10:48 _未知的暖意 阅读(104) 评论(0) 推荐(0)
摘要: 给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。 我们是这样定义一个非递减数列的: 对于数组中所有的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。 示例 1: 输入: nums = [4,2,3] 阅读全文
posted @ 2020-07-19 10:34 _未知的暖意 阅读(289) 评论(0) 推荐(0)
摘要: 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串 阅读全文
posted @ 2020-07-19 10:02 _未知的暖意 阅读(120) 评论(0) 推荐(0)
摘要: 假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回Fals 阅读全文
posted @ 2020-07-19 09:56 _未知的暖意 阅读(132) 评论(0) 推荐(0)
摘要: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 阅读全文
posted @ 2020-07-19 09:43 _未知的暖意 阅读(145) 评论(0) 推荐(0)
摘要: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1 阅读全文
posted @ 2020-07-19 09:37 _未知的暖意 阅读(147) 评论(0) 推荐(0)
摘要: 假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 注意:总人数少于1100人。 示例 输入: [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] 阅读全文
posted @ 2020-07-19 09:07 _未知的暖意 阅读(160) 评论(0) 推荐(0)
摘要: 在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。 一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个 阅读全文
posted @ 2020-07-19 08:25 _未知的暖意 阅读(144) 评论(0) 推荐(0)