leetcode
YupJuniper
这个作者很懒,什么都没留下…
展开
-
[LeetCode] 89.格雷编码
题目搞清楚格雷编码的生成过程, G(i) = i ^ (i/2);如 n = 3:G(0) = 000,G(1) = 1 ^ 0 = 001 ^ 000 = 001G(2) = 2 ^ 1 = 010 ^ 001 = 011G(3) = 3 ^ 1 = 011 ^ 001 = 010G(4) = 4 ^ 2 = 100 ^ 010 = 110G(5) = 5 ^ 2 = 101 ^...原创 2019-06-11 00:48:13 · 60 阅读 · 0 评论 -
[LeetCode] 169. 求众数
题目给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2nums.sort() return nums[int(len(nums)/2)]...原创 2019-06-04 08:58:16 · 75 阅读 · 0 评论 -
[LeetCode] 206. 反转链表
题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULLdef reverseList(self, head): """ :type head: ListNode :rtype: ListNode """...原创 2019-06-10 02:09:41 · 57 阅读 · 0 评论 -
[LeetCode] 237. 删除链表中的节点
题目请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9]示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head ...原创 2019-06-10 01:46:26 · 49 阅读 · 0 评论 -
[LeetCode] 557. 反转字符串中的单词 III
题目给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: “Let’s take LeetCode contest”输出: “s’teL ekat edoCteeL tsetnoc”注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。class Solution(object): def reverseW...原创 2019-06-10 01:33:26 · 73 阅读 · 0 评论 -
[LeetCode] 142. 环形链表 II
题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1...原创 2019-06-10 01:23:06 · 65 阅读 · 0 评论 -
[LeetCode] 141. 环形链表
题目给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。def hasCycle(self, head): """...原创 2019-06-09 23:48:18 · 73 阅读 · 0 评论 -
[LeetCode] 231. 2的幂
题目示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false解法1:&运算,同1则1。 return (n > 0) and (n & -n) ==n或者 return (n>0) and (n&n-1 == 0)== 0解释:2的幂...原创 2019-06-14 17:07:36 · 61 阅读 · 0 评论 -
[LeetCode] 121.买卖股票的最佳时机
题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润...原创 2019-06-19 09:07:27 · 69 阅读 · 0 评论 -
[LeetCode] 292. Nim 游戏
题目你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;因为无论你拿走 1 块、2 块 还是 3 块石头,最...原创 2019-06-03 00:33:15 · 52 阅读 · 0 评论 -
[LeetCode] 160. 相交链表
标题编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,...原创 2019-06-17 08:59:46 · 59 阅读 · 0 评论 -
[LeetCode] 104. 二叉树的最大深度
标题给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。# Definition for a binary tree node.# class TreeNode(object):# def __init__(s...原创 2019-06-11 23:49:48 · 59 阅读 · 0 评论 -
[LeetCode] 124. 二叉树中的最大路径和
题目给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。class Solution: def maxPathSum(self, root): """ :type root: TreeNode :rtype: int """ ...原创 2019-06-29 11:46:01 · 114 阅读 · 0 评论 -
[LeetCode]155.最小栈
题目设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);m...原创 2019-06-29 11:41:31 · 85 阅读 · 0 评论 -
[LeetCode] 230. 二叉搜索树中第K小的元素
题目给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。def kthSmallest(self, root, k): """ :type root: TreeNode :type k: int :rtype: int...原创 2019-06-29 11:39:04 · 101 阅读 · 0 评论 -
[LeetCode] 146. LRU缓存机制
题目运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使...原创 2019-06-29 11:34:55 · 125 阅读 · 0 评论 -
[LeetCode] 235. 二叉搜索树的最近公共祖先
题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'Tr...原创 2019-06-29 11:29:48 · 105 阅读 · 0 评论 -
[LeetCode] 148.排序链表
题目在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5if not head or not head.next: ...原创 2019-06-29 11:25:17 · 65 阅读 · 0 评论 -
[LeetCode] 16.最接近三个数的和
题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2). for i, num in enume...原创 2019-06-29 11:12:47 · 93 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II
题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易...原创 2019-06-22 22:58:35 · 71 阅读 · 0 评论 -
[LeetCode] 215. 数组中的第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输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。快排相关class Soluti...原创 2019-06-17 23:40:49 · 88 阅读 · 0 评论 -
[LeetCode] 88. 合并两个有序数组
题目给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = ...原创 2019-06-03 00:24:57 · 53 阅读 · 0 评论 -
[LeetCode] 62。不同路径
题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径? def uniquePaths(self, m: int, n: int) -> int: a = min(m,n) b = m+n...原创 2019-05-29 23:31:06 · 106 阅读 · 0 评论 -
[LeetCode] 46.全排列
题目给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]class Solution: def permute(self, nums: List[int]) -> List[List[int]]: def bac...原创 2019-05-25 23:26:01 · 53 阅读 · 0 评论 -
[LeetCode] 7.整数反转
题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。class Solutio...原创 2019-05-12 21:25:55 · 60 阅读 · 0 评论 -
[LeetCode] 23.合并K个排序链表
题目合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6class Solution: def mergeKLists(self, listss: List[ListNode...原创 2019-05-22 00:03:47 · 95 阅读 · 0 评论 -
[LeetCode] 4. 寻找两个有序数组的中位数(python)
题目给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 +...原创 2019-05-11 22:46:56 · 82 阅读 · 0 评论 -
[LeetCode] 11. 盛最多水的容器
题目给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示...原创 2019-05-16 08:01:53 · 64 阅读 · 0 评论 -
[LeetCode] 2.两数相加(python3)
[LeetCode] 2.两数相加(python3))题目描述1、嵌套2、while遍历*链表相关*1、定义链表2、对链表进行操作题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开...原创 2019-05-11 11:40:50 · 387 阅读 · 0 评论 -
[LeetCode] 21. 合并两个有序链表
题目将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4 def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: l ...原创 2019-05-20 22:47:11 · 65 阅读 · 0 评论 -
[LeetCode] 14.最长公共前缀
题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:加粗样式输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。def longestCommonPrefix(...原创 2019-05-14 23:12:33 · 77 阅读 · 0 评论 -
[LeetCode] 8. 字符串转换整数 (atoi)
标题请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可...原创 2019-05-20 09:06:17 · 66 阅读 · 0 评论 -
[LeetCode] 20.有效的括号
题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: falseclass Solut...原创 2019-05-19 08:55:56 · 89 阅读 · 0 评论 -
[LeetCode] 88. 合并两个有序数组
题目给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = ...原创 2019-05-17 08:54:23 · 58 阅读 · 0 评论 -
[LeetCode] 54.螺旋矩阵
题目示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7] def spiralOrder(self, matrix:...原创 2019-05-26 11:35:19 · 78 阅读 · 0 评论 -
[LeetCode] 61.旋转链表
标题给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->...原创 2019-05-29 23:29:03 · 64 阅读 · 0 评论 -
[LeetCode] 344. 反转字符串
题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“...原创 2019-06-07 02:21:56 · 64 阅读 · 0 评论 -
[LeetCode] 238. 除自身以外数组的乘积
标题给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输...原创 2019-06-13 00:50:12 · 69 阅读 · 0 评论 -
[LeetCode] 78.子集
题目给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]] def subsets(self, nums): res = [[]] for i in r...原创 2019-05-31 23:17:30 · 55 阅读 · 0 评论 -
[leetCode]70.爬楼梯
题目假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 ...原创 2019-05-30 23:47:52 · 48 阅读 · 0 评论