
leetcode
统计分析分析
同名微信公众号:统计分析分析
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
136. 只出现一次的数字
想到一种,用set来化简的操作来源鸡兔同笼return sum(set(nums))*2 - sum(nums)原创 2019-06-28 10:22:18 · 193 阅读 · 0 评论 -
125. 验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。class Solution: def isPalindrome(self, s: str) -> bool: s = s.lower() start,end = 0,len(s)-1 ...原创 2019-06-11 09:36:08 · 161 阅读 · 0 评论 -
124. 二叉树中的最大路径和
给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。class Solution: def maxPathSum(self, root): """ :type root: TreeNode :rtype: int """ ...原创 2019-06-11 09:14:15 · 200 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)class Solution: def maxProfit(self, prices: List[int]) -> int: max_profi...原创 2019-06-10 09:45:05 · 172 阅读 · 0 评论 -
121. 买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。经典递推class Solution: def maxProfit(self, prices: List[int]) -> int: #递推 min= min(min,p[...原创 2019-06-10 09:37:37 · 134 阅读 · 0 评论 -
90. 子集 II
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集class Solution: def subsetsWithDup(self, nums: List[int]) -> List[List[int]]: nums.sort() res = [[]] for i in ra...原创 2019-06-10 09:24:53 · 160 阅读 · 0 评论 -
89. 格雷编码
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。class Solution: def grayCode(self, n: int) -> List[int]: r = [0] for i in range(n): ...原创 2019-06-10 09:04:08 · 170 阅读 · 0 评论 -
142. 环形链表 II
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。和前面题一样,但是这次用了集合来做,看起来空间复杂度木有改善- -,时间复杂度倒是变高了class Solution(object): ...原创 2019-06-14 09:42:04 · 153 阅读 · 0 评论 -
141. 环形链表
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。emmmm ,不知道为啥空间复杂度很高,明明就两个指针- -class Solution(object): def hasCycle(self, head): """ :typ...原创 2019-06-14 09:32:12 · 162 阅读 · 0 评论 -
136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?import collectionsclass Solution: def singleNumber(self, nums: List[int]) -> int: for k,v in co...原创 2019-06-14 09:14:11 · 156 阅读 · 0 评论 -
78. 子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。#显然可以用自带的迭代器骚一下,但是还是稳一点class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: #递归 res = [] n = le...原创 2019-06-02 21:48:10 · 113 阅读 · 0 评论 -
旋转链表
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。class Solution: def rotateRight(self, head: 'ListNode', k: 'int') -> 'ListNode': if not head: return None if not he...原创 2019-05-29 22:47:19 · 164 阅读 · 0 评论 -
169. 求众数
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。import collectionsclass Solution(object): def majorityElement(self, nums): """ :type nums: List[int] ...原创 2019-06-16 17:58:04 · 207 阅读 · 0 评论 -
206. 反转链表
太简单了。class Solution(object): def reverseList(self, head): """ :type head: ListNode :rtype: ListNode """ p=None while head: head.next, p, head = p, ...原创 2019-06-16 18:02:40 · 131 阅读 · 0 评论 -
215. 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。class Solution(object): def findKthLargest(self, nums, k): """ :type nums: List[int] :type k: int :rt...原创 2019-06-16 18:08:17 · 147 阅读 · 0 评论 -
215. 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。我有一个大胆的想法:)return sorted(nums)[-k]当然还可以用快排...原创 2019-06-28 10:15:33 · 186 阅读 · 0 评论 -
557. 反转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。我有一个大胆的想法:)return (''.join(s)[::-1])[::-1]原创 2019-06-28 10:06:42 · 177 阅读 · 0 评论 -
344. 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。涉及反转的都考虑 双指针class Solution(object): def reverseString(self, s): ...原创 2019-06-28 10:03:46 · 177 阅读 · 0 评论 -
292. Nim 游戏
你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏既然4块赢不了,那就都留4块给他就行:)return n%4 != 0...原创 2019-06-28 09:59:18 · 174 阅读 · 0 评论 -
238. 除自身以外数组的乘积
给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。太菜了,还是大佬牛逼class Solution(object): def productExceptSelf(self, nums): """ :type nums: List...原创 2019-06-24 10:12:57 · 157 阅读 · 0 评论 -
237. 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。直接node = node.next 是不行的,因为对象还是不变。需要这样完整修改node.val, node.next = node.next.val, node.next.next...原创 2019-06-24 10:05:59 · 209 阅读 · 0 评论 -
236. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”class Solution(object): def lowestCommonAncestor(self, root, p, q): ...原创 2019-06-24 10:00:26 · 174 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。公共祖先肯定在pq之间,由于pq不知道谁先所以先判断一下。class Solution(object): def lowestCommonAncestor(self, root, p, q): """ :type root: TreeNode :type p: TreeNode...原创 2019-06-24 09:55:49 · 152 阅读 · 0 评论 -
231. 2的幂
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。还是大佬太强了,一行搞定。。class Solution(object): def isPowerOfTwo(self, n): """ :type n: int :rtype: bool """ return n > 0 and not (n&...原创 2019-06-24 09:49:05 · 124 阅读 · 0 评论 -
230. 二叉搜索树中第K小的元素
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。基本上就是中序遍历# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self....原创 2019-06-24 09:43:15 · 136 阅读 · 0 评论 -
217. 存在重复元素
给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。用集合就通过了,列表没有通过- -class Solution(object): def containsDuplicate(self, nums): """ :type nums: List[int] ...原创 2019-06-24 09:30:23 · 164 阅读 · 0 评论 -
70. 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。class Solution: def climbStairs(self, n: int) -> int: #动态规划,经典 #dp[i] = dp[i-1] + dp[i-1] if ...原创 2019-06-01 10:19:06 · 105 阅读 · 0 评论 -
88. 合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。class Solution(object): def merge(self, nums...原创 2019-06-06 10:23:12 · 121 阅读 · 0 评论 -
leetcode -腾讯50题
两数相加题解> # Definition for singly-linked list.> # class ListNode:> # def __init__(self, x):> # self.val = x> # self.next = None> > class Solution:> ...原创 2019-05-10 22:29:41 · 225 阅读 · 0 评论 -
9. 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。题解,太简单了00class Solution: def isPalindrome(self, x: int) -> bool: return str(x) == str(x)[::-1]...原创 2019-05-15 09:34:49 · 188 阅读 · 0 评论 -
9. 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。题解,太简单了00class Solution: def isPalindrome(self, x: int) -> bool: return str(x) == str(x)[::-1]...原创 2019-05-15 09:34:44 · 136 阅读 · 0 评论 -
合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: if l1==None:return l2 if l2==None:return l1 ...原创 2019-05-20 09:59:10 · 101 阅读 · 0 评论 -
有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。用栈实现class Solution: def isValid(self, s: str) -> bool: stack, d = [], {'{':...原创 2019-05-20 09:51:09 · 94 阅读 · 0 评论 -
最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。三指针等于遍历加双指针class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int: ...原创 2019-05-20 09:22:30 · 106 阅读 · 0 评论 -
整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。这个挺简单的,int–str–int,就是这个异常原来要单独处理这样,这样算作弊码0.0class Solution: def reverse(self, x: int) -> int: if x>=0: y = int(str(x)[::-1]) ...原创 2019-05-14 08:54:20 · 97 阅读 · 0 评论 -
[leetcode]594. Longest Harmonious Subsequence
We define a harmonious array is an array where the difference between its maximum value and its minimum value is exactly 1.Now, given an integer array, you need to find the length of its longest har...原创 2019-04-02 20:41:49 · 167 阅读 · 0 评论 -
762. Prime Number of Set Bits in Binary Representation
Given two integers L and R, find the count of numbers in the range [L,R] (inclusive) having a prime number of set bits in their binaryrepresentation.(Recall that the number of set bits an integer ...原创 2019-04-06 21:33:39 · 162 阅读 · 0 评论 -
[leetcode]945. Minimum Increment to Make Array Unique
Given an array of integers A, a move consists of choosing any A[i],and incrementing it by 1.Return the least number of moves to make every value in A unique.Example 1:Input: [1,2,2] Output: 1 Exp...原创 2019-04-05 17:04:48 · 249 阅读 · 0 评论 -
908. Smallest Range I
Given an array A of integers, for each integer A[i] we may choose any x with -K <= x <= K, and add x to A[i].After this process, we have some array B.Return the smallest possible difference ...原创 2019-04-04 17:25:20 · 274 阅读 · 0 评论 -
23. 合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。分治法class Solution: def mergeKLists(self, lists: List[ListNode]) -> ListNode: if not lists:return n = len(lists) return self.merge(l...原创 2019-05-21 09:08:55 · 109 阅读 · 0 评论