
LeetCode
ShawDa
Github:https://github.com/ShawDa
展开
-
leetcode26. 删除排序数组中的重复项
两个指针,一个和数据一直走,一个记录不重复数据的位置:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-arrayclass Solution: def removeDuplicates(self, nums): """ :type nums: List[int] ...原创 2018-12-04 15:13:23 · 809 阅读 · 0 评论 -
leetcode80. 删除排序数组中的重复项 II
leetcode80. 删除排序数组中的重复项 II这个比之前那个难一点,要使得每个元素最多出现两次(以可拓展到n次),方法类似。比较当前数字和前一个数是否一样,如果不一样则置cnt为1,再把数据写入index位置,index加一;如果一样,且cnt小于最多重复出现的次数,那么cnt加一,数据写入index,index加一:https://leetcode-cn.com/problems/remove-duplicates-from-sorted...原创 2018-12-04 15:48:17 · 1232 阅读 · 0 评论 -
leetcode283. 移动零
就是把非0数移动到前面,最后的全置0就好:https://leetcode-cn.com/problems/move-zeroesclass Solution: def moveZeroes(self, nums): """ :type nums: List[int] :rtype: void Do not return anything...原创 2018-12-04 16:00:02 · 735 阅读 · 0 评论 -
leetcode203. 移除链表元素
思路比较简单,先把头部得所有值为val的元素移除,当然是在头不为None的时候,然后对后面值不为val的元素进行删除就行:https://leetcode-cn.com/problems/remove-linked-list-elements# Definition for singly-linked list.# class ListNode:# def __init__(sel...原创 2018-12-04 16:33:01 · 790 阅读 · 0 评论 -
leetcode237. 删除链表中的节点
这题很巧妙,题目告诉我们要删除的节点不在末尾,那么可以把下个节点的值置于要删除节点处,然后删除下一个节点即可:https://leetcode-cn.com/problems/delete-node-in-a-linked-list# Definition for singly-linked list.# class ListNode:# def __init__(self, x)...原创 2018-12-04 19:07:36 · 592 阅读 · 0 评论 -
leetcode101. 对称二叉树
leetcode101. 对称二叉树https://leetcode-cn.com/problems/symmetric-tree对称二叉树满足两个要求:它们的两个根结点具有相同的值;每个树的右子树都与另一个树的左子树镜像对称。所以有递归和迭代两种方法来解。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):...原创 2018-12-04 19:53:14 · 471 阅读 · 0 评论 -
leetcode102. 二叉树的层次遍历
https://leetcode-cn.com/problems/binary-tree-level-order-traversal用一个栈保存每个节点的左右子树节点:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# ...原创 2018-12-04 20:28:28 · 611 阅读 · 0 评论 -
leetcode103. 二叉树的锯齿形层次遍历
https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal对之前那一题加个flag做reverse就好了:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.va...原创 2018-12-04 20:39:03 · 823 阅读 · 0 评论 -
leetcode107. 二叉树的层次遍历 II
leetcode107. 二叉树的层次遍历 IIhttps://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii自底向上层次遍历:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# sel...原创 2018-12-04 20:45:45 · 530 阅读 · 0 评论 -
leetcode111. 二叉树的最小深度
https://leetcode-cn.com/problems/minimum-depth-of-binary-tree先判断根节点是否为None,如果是,则返回0,否则置depth为1;再把根节点的左右子树入栈;对一层节点,每次取两个,如果节点均为空则返回depth,否则把非空节点的左右子树入栈;最后一定会找到最小深度的叶子节点(无左右子树)。# Definition for a b...原创 2018-12-05 09:50:21 · 556 阅读 · 0 评论 -
leetcode104. 二叉树的最大深度
leetcode104. 二叉树的最大深度https://leetcode-cn.com/problems/maximum-depth-of-binary-tree层次遍历得到结果list的length。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# ...原创 2018-12-05 10:03:44 · 532 阅读 · 0 评论 -
leetcode559. N叉树的最大深度
https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree需要注意的一点是这里要判断节点是否有孩子节点,如果不,则返回1."""# Definition for a Node.class Node(object): def __init__(self, val, children): self.val =...原创 2018-12-05 10:40:30 · 564 阅读 · 0 评论 -
leetcode110. 平衡二叉树
https://leetcode-cn.com/problems/balanced-binary-tree思路就是查询每一个节点的左右子树高度。# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# s...原创 2018-12-05 11:34:06 · 441 阅读 · 0 评论 -
leetcode637. 二叉树的层平均值
https://leetcode-cn.com/problems/average-of-levels-in-binary-tree# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None...原创 2018-12-05 12:25:20 · 800 阅读 · 0 评论 -
leetcode257. 二叉树的所有路径
https://leetcode-cn.com/problems/binary-tree-paths要找二叉树的所有路径,就是要找叶子节点,用递归的方法来求:首先判断根节点但是否为空,若是,则返回空数组;再递归向下查找,用arr保存当前路径,若遇到根节点,则将arr写入res若有某一个子树存在,则递归查询改子树,arr+该子树的值;self.res来保存每一个路径。# Definitio...原创 2018-12-05 15:26:43 · 448 阅读 · 0 评论 -
leetcode112. 路径总和
leetcode112. 路径总和https://leetcode-cn.com/problems/path-sum开始想的是一条一条路径找,找到一条后求和,若等于sum就返回True。之后看到可以直接递归,因为根节点到叶子节点和为sum,那么只需要它有一个子节点到叶子节点的和为sum-root.val,如果找到叶子节点,将它的值与最后得到的sum比较下就可得到结果。# Definition for a binary tree...原创 2018-12-05 15:44:50 · 494 阅读 · 0 评论 -
leetcode113. 路径总和 II
https://leetcode-cn.com/problems/path-sum-ii常规做法,找到路径,然后看和是否等于sum。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = Non...原创 2018-12-05 16:14:42 · 743 阅读 · 0 评论 -
leetcode746. 使用最小花费爬楼梯
https://leetcode-cn.com/problems/min-cost-climbing-stairsclass Solution: def minCostClimbingStairs(self, cost): """ :type cost: List[int] :rtype: int "原创 2018-12-08 16:32:29 · 998 阅读 · 2 评论 -
leetcode437. 路径总和 III
https://leetcode-cn.com/problems/path-sum-iii暴力求解,耗时较长。注意代码中的pathSum函数表示从root向下,取任一点出发到任一点结束状况下路径和为sum的路径个数;而get_path函数表示从node出发,到任一点结束状况下路径和为sum的路径个数。所以,从根节点出发的pathSum等于从根节点出发的get_path加上分别从左右子树出发的pa...原创 2018-12-05 16:59:18 · 1229 阅读 · 0 评论 -
leetcode2.两数相加
考察的是链表和基本数学操作:https://leetcode-cn.com/problems/add-two-numbers# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next =...原创 2018-12-03 19:53:28 · 819 阅读 · 0 评论 -
leetcode445. 两数相加 II
比之前那个两数相加增加了点难度:https://leetcode-cn.com/problems/add-two-numbers-ii# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = No...原创 2018-12-03 20:25:40 · 810 阅读 · 0 评论 -
leetcode27. 移除元素
两个指针的运用:https://leetcode-cn.com/problems/remove-elementclass Solution: def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rtype: int ...原创 2018-12-03 20:56:27 · 511 阅读 · 0 评论 -
leetcode53. 最大子序和
https://leetcode-cn.com/problems/maximum-subarray这是一道很初级的动态规划题目,我们只要找到了求解的规律就很好写出代码了。class Solution: def maxSubArray(self, nums): """ :type nums: List[int] :rtype: int ...原创 2018-12-07 15:44:50 · 816 阅读 · 0 评论 -
leetcode70. 爬楼梯
https://leetcode-cn.com/problems/climbing-stairs斐波那契数列,注意要用递推class Solution: def climbStairs(self, n): """ :type n: int :rtype: int "&quot原创 2018-12-07 16:01:41 · 1039 阅读 · 0 评论 -
leetcode153. 寻找旋转排序数组中的最小值
leetcode153. 寻找旋转排序数组中的最小值https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出...原创 2018-12-20 17:43:30 · 585 阅读 · 0 评论 -
leetcode3. 无重复字符的最长子串
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释...原创 2018-12-26 23:26:16 · 472 阅读 · 0 评论 -
leetcode33. 搜索旋转排序数组
https://leetcode-cn.com/problems/search-in-rotated-sorted-array/假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。...原创 2018-12-21 14:57:20 · 782 阅读 · 0 评论 -
leetcode154. 寻找旋转排序数组中的最小值 II
https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例 1:输入: [1,3,5]输出: 1...原创 2018-12-21 15:31:38 · 648 阅读 · 0 评论 -
leetcode4. 寻找两个有序数组的中位数
https://leetcode-cn.com/problems/median-of-two-sorted-arrays/给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [...原创 2018-12-27 14:09:44 · 818 阅读 · 0 评论 -
leetcode81.搜索旋转排序数组 II
https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。示例 1:输入: ...原创 2018-12-22 16:37:21 · 1585 阅读 · 2 评论 -
leetcode9. 回文数
https://leetcode-cn.com/problems/palindrome-number有一个星期没做题了,拿个简单的练下手。看到题目第一个想法就是reversed([]):class Solution: def isPalindrome(self, x): """ :type x: int :rtype: bool ...原创 2018-12-17 20:55:43 · 607 阅读 · 0 评论 -
leetcode69. x 的平方根
https://leetcode-cn.com/problems/sqrtx二分法,找到一个数mid,当它的平方小于等于x,它加1的平方大于x,则这个数就是要找的数:class Solution: def mySqrt(self, x): """ :type x: int :rtype: int """ #..原创 2018-12-18 11:27:56 · 925 阅读 · 0 评论 -
leetcode7. 整数反转
https://leetcode-cn.com/problems/reverse-integer给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 23...原创 2018-12-29 12:53:23 · 733 阅读 · 0 评论 -
leetcode896. 单调数列
https://leetcode-cn.com/problems/monotonic-array用个flag标记递增还是递减,一次遍历:class Solution: def isMonotonic(self, A): """ :type A: List[int] :rtype: bool """ flag...原创 2018-12-18 19:42:31 · 878 阅读 · 0 评论 -
leetcode100. 相同的树
leetcode100. 相同的树https://leetcode-cn.com/problems/same-tree/给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。很简单:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# ...原创 2019-01-03 20:24:49 · 702 阅读 · 0 评论 -
leetcode125. 验证回文串
https://leetcode-cn.com/problems/valid-palindrome/给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: fals...原创 2019-01-03 20:37:50 · 497 阅读 · 0 评论 -
leetcode1.两数之和
https://leetcode-cn.com/problems/two-sum给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nu...原创 2018-12-24 16:38:09 · 597 阅读 · 0 评论 -
leetcode167. 两数之和 II - 输入有序数组
leetcode167. 两数之和 II - 输入有序数组https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输...原创 2018-12-24 17:21:56 · 488 阅读 · 0 评论 -
leetcode118. 杨辉三角
https://leetcode-cn.com/problems/pascals-triangle/给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]每一行首尾都是1,第三行和之后,中间第j位置的数是...原创 2019-01-04 10:46:59 · 494 阅读 · 0 评论 -
leetcode119. 杨辉三角 II
https://leetcode-cn.com/problems/pascals-triangle-ii/给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗?注意k==0代表第一行,找个tmp存储上一级的结果就行:class...原创 2019-01-04 11:22:47 · 883 阅读 · 0 评论