随笔分类 -  Leetcode

Leetcode(886)-可能的二分法
摘要:给定一组 N 人(编号为 1, 2, ..., N), 我们想把每个人分进任意大小的两组。 每个人都可能不喜欢其他人,那么他们不应该属于同一组。 形式上,如果 dislikes[i] = [a, b],表示不允许将编号为 a 和 b 的人归入同一组。 当可以用这种方法将每个人分进两组时,返回 tru 阅读全文
posted @ 2018-08-18 22:33 Mini_Coconut 阅读(1576) 评论(0) 推荐(0)
Leetcode(712)-账户合并
摘要:给定一个列表 accounts,每个元素 accounts[i] 是一个字符串列表,其中第一个元素 accounts[i][0] 是 名称 (name),其余元素是 emails 表示该帐户的邮箱地址。 现在,我们想合并这些帐户。如果两个帐户都有一些共同的邮件地址,则两个帐户必定属于同一个人。请注意 阅读全文
posted @ 2018-08-10 19:13 Mini_Coconut 阅读(838) 评论(0) 推荐(0)
Leetcode(29)-两数相除
摘要:给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 示例 1: 示例 2: 说明: 被除数和除数均为 32 位有符号整数。 除数不为 0。 假设我们的环境只能存储 3 阅读全文
posted @ 2018-08-07 17:48 Mini_Coconut 阅读(169) 评论(0) 推荐(0)
Leetcode(25)- k个一组翻转链表
摘要:给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 示例 : 给定这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2->1->4->3->5 当 k = 阅读全文
posted @ 2018-08-06 17:56 Mini_Coconut 阅读(133) 评论(0) 推荐(0)
Leetcode(884)-索引处的解码字符串
摘要:给定一个编码字符串 S。为了找出解码字符串并将其写入磁带,从编码字符串中每次读取一个字符,并采取以下步骤: 如果所读的字符是字母,则将该字母写在磁带上。 如果所读的字符是数字(例如 d),则整个当前磁带总共会被重复写 d-1 次。 现在,对于给定的编码字符串 S 和索引 K,查找并返回解码字符串中的 阅读全文
posted @ 2018-08-05 23:07 Mini_Coconut 阅读(1345) 评论(0) 推荐(0)
Leetcode(885)- 救生艇
摘要:第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。 返回载到每一个人所需的最小船数。(保证每个人都能被船载)。 示例 1: 示例 2: 示例 3: 提示: 1 <= people.length <= 阅读全文
posted @ 2018-08-05 22:52 Mini_Coconut 阅读(508) 评论(0) 推荐(0)
Leetcode(23)-合并K个排序链表
摘要:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 思路:k个链表是排好序的,那我们就可以依次,按顺序的比较每个链表的节点,将最小的依次放入一个新链表中。我的做法是动态申请一个指针数组,每个链表均由一个指针指向,然后就可以比较每个链表的值,直到每个链表为空。这里注意在遍历 阅读全文
posted @ 2018-08-05 15:42 Mini_Coconut 阅读(1295) 评论(0) 推荐(0)
Leetcode(22)-括号生成
摘要:给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: 思路:一开始思路是将n对括号进行全排列,依次判断每个组合的合法性,但是这样仅限于n比较小的时候,n一旦大于6,算法复杂度将会很大。显然不是该题的考察点。我们看到“所有可能 阅读全文
posted @ 2018-08-04 15:15 Mini_Coconut 阅读(151) 评论(0) 推荐(0)
Leetcode(102)-二叉树的层次遍历
摘要:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如:给定二叉树: [3,9,20,null,null,15,7], 返回其层次遍历结果: 思路:按层次遍历节点,我们需要将每层的节点按顺序存起来,这个时候用到了队列,先入先出,访问每个节点,顺便将这个节点的左右子树再 阅读全文
posted @ 2018-08-04 15:04 Mini_Coconut 阅读(157) 评论(0) 推荐(0)
Leetcode(82)-删除排序链表中的重复元素 II
摘要:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 示例 2: 思路:这个题目和上一个不太一样,因为它不留下重复的元素。我一开始的思路是,先遍历链表,将每个值的个数计算并保存下,再次遍历链表,并将只出现的一次的节点留下来,但是这样遍历两次的思想显然不明 阅读全文
posted @ 2018-08-03 21:13 Mini_Coconut 阅读(408) 评论(0) 推荐(0)
Leetcode(83)-删除排序链表中的重复元素
摘要:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 示例 2: 思路:要删除一个排序链表的重复元素,重复元素都是挨着的,还是用两个指针来解决问题,一个指针用来查找重复的元素,一个指针用来重新串联起一个新的链表。 阅读全文
posted @ 2018-08-03 20:49 Mini_Coconut 阅读(386) 评论(0) 推荐(0)
Leetcode(19)-删除链表的倒数第N个节点
摘要:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 思路:链表不同于数组,也不同于字符串,不可能事先知道它的长度,除非遍历到最后结尾。删除倒数第N个节点,可以先遍历到链表尾部,再反向遍历N个,找到倒数第N个节点删除就好了。但是这种方式明显太复杂了,如果我要删除第一个节点的话, 阅读全文
posted @ 2018-08-03 20:41 Mini_Coconut 阅读(189) 评论(0) 推荐(0)
Leetcode(337)-打家劫舍III
摘要:小偷又发现一个新的可行窃的地点。 这个地区只有一个入口,称为“根”。 除了根部之外,每栋房子有且只有一个父房子。 一番侦察之后,聪明的小偷意识到“这个地方的所有房屋形成了一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。 在不触动警报的情况下,计算小偷一晚能盗取的最高金额。 阅读全文
posted @ 2018-08-01 17:47 Mini_Coconut 阅读(179) 评论(0) 推荐(0)
Leetcode(213)-打家劫舍II
摘要:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报 阅读全文
posted @ 2018-08-01 16:09 Mini_Coconut 阅读(179) 评论(0) 推荐(0)
Leetcode(198)-打家劫舍
摘要:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 示例 1: 示 阅读全文
posted @ 2018-08-01 16:05 Mini_Coconut 阅读(166) 评论(0) 推荐(0)
Leetcode(32)-最长有效括号
摘要:给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 示例 1: 示例 2: 思路:这个题目和前面一个有效括号很类似,不过那个是判断整个字符串是否是合法的括号,这个要从字符串中找到最长的有效字符串。还可以用栈来实现,也可以想到动态规划,不过个人觉得动态规划的方法比较难以 阅读全文
posted @ 2018-08-01 12:16 Mini_Coconut 阅读(171) 评论(0) 推荐(0)
Leetcode(878)-第 N 个神奇数字
摘要:如果正整数可以被 A 或 B 整除,那么它是神奇的。 返回第 N 个神奇数字。由于答案可能非常大,返回它模 10^9 + 7 的结果。 示例 1: 示例 2: 示例 3: 示例 4: 提示: 思路:我一开始用了很原始的方式,将n从1开始加,判断是否可以被两个数的其中一个整除,如果可以就打入vecto 阅读全文
posted @ 2018-07-29 21:41 Mini_Coconut 阅读(1479) 评论(0) 推荐(0)
Leetcode(877)-石子游戏
摘要:亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。 游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。 亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石 阅读全文
posted @ 2018-07-29 21:27 Mini_Coconut 阅读(1623) 评论(1) 推荐(0)
Leetcode(257)-二叉树的所有路径
摘要:给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 思路:要求所有路径这种所有解问题,要想到深度优先遍历。这里我们采用深入优先遍历,递归的方式来实现。其中涉及到int型转string型的知识。 int转string。 (1)c++中的<string>中 阅读全文
posted @ 2018-07-17 22:43 Mini_Coconut 阅读(155) 评论(0) 推荐(0)
Leetcode(871)-最低加油次数
摘要:汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。 沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 station[i][1] 升汽油。 假设汽车油箱的容量是无限的,其中最初有 startFuel 升燃 阅读全文
posted @ 2018-07-17 10:33 Mini_Coconut 阅读(2546) 评论(1) 推荐(1)