
leetcode
Aries888
数据分析师,坚持学习和分享高质量内容
展开
-
Leetcode 1. 两数之和(Python3)
1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1] #two...原创 2018-12-05 11:48:29 · 368 阅读 · 0 评论 -
Leetcode 7. 整数反转(Python3)
7.整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么...原创 2018-12-05 12:39:22 · 658 阅读 · 0 评论 -
Leetcode 69.x 的平方根(Python3)
69.x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。 自己写的代码:思想...原创 2018-12-12 16:58:56 · 221 阅读 · 0 评论 -
Leetcode 9.回文数(Python3)
9.回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此...原创 2018-12-08 21:02:17 · 233 阅读 · 0 评论 -
Leetcode 28.实现strStr()(Python3)
28.实现strStr()实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack =...原创 2018-12-13 10:47:35 · 240 阅读 · 0 评论 -
Leetcode 35.搜索插入位置(Python3)
35.搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: ...原创 2018-12-13 11:22:14 · 328 阅读 · 0 评论 -
Leetcode 88.合并两个有序数组(Python3)
88. 合并两个有序数组给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0]...原创 2018-12-19 14:57:32 · 347 阅读 · 0 评论 -
Leetcode 38.报数(Python3)
38.报数报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" (&原创 2018-12-14 10:59:55 · 293 阅读 · 0 评论 -
Leetcode 13.罗马数字转整数(Python3)
13.罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 I...原创 2018-12-09 14:05:53 · 260 阅读 · 0 评论 -
Leetcode 12.整数转罗马数字(Python3)
12.整数转罗马数字罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 I...原创 2018-12-09 15:12:27 · 414 阅读 · 0 评论 -
Leetcode 14.最长公共前缀(Python3)
14.最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。原创 2018-12-09 20:06:13 · 190 阅读 · 0 评论 -
Leetcode 206.反转链表(Python3)
206. 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 代码:# Definition for singly-linked list.# class ListNo...原创 2018-12-20 17:23:45 · 559 阅读 · 0 评论 -
Leetcode 141. 环形链表 & 142. 环形链表 II(Python3)
141. 环形链表给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [...原创 2018-12-20 17:28:52 · 588 阅读 · 0 评论 -
Leetcode 24.两两交换链表中的节点(Python3)
24. 两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 写法1:# Definition for singly-linked...原创 2018-12-20 17:47:34 · 219 阅读 · 0 评论 -
Leetcode 53.最大子序和(Python3)
53.最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。 只能想到暴力破解,根本达不到O(n...原创 2018-12-15 22:31:09 · 165 阅读 · 0 评论 -
Leetcode 232. 用栈实现队列 & 225. 用队列实现栈(Python3)
232. 用栈实现队列使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek()...原创 2018-12-21 10:49:37 · 735 阅读 · 0 评论 -
Leetcode 58.最后一个单词的长度(Python3)
58.最后一个单词的长度给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5代码:#length-of-last-wordclass Solution: def lengthOfLastW...原创 2018-12-16 12:10:25 · 159 阅读 · 0 评论 -
Leetcode 66.加一(Python3)
66. 加一给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表...原创 2018-12-16 13:38:14 · 281 阅读 · 0 评论 -
Leetcode 703. 数据流中的第K大元素 & 239. 滑动窗口最大值(Python3)
开始在极客时间学习覃超老师的算法面试,算作笔记同时继续刷题。目前为止,老师大部分用的py3,也有用java。这两道题都可以用优先队列(PriorityQueue)来解决:回顾栈、队列、优先队列:PriorityQueue:Mini Heap:Max Heap:各种Heap的时间复杂度: 703. 数据流中的第K大元素设计一个找到数据流中...原创 2018-12-21 21:31:04 · 909 阅读 · 0 评论 -
Leetcode 122. 买卖股票的最佳时机 II(Python3)
122. 买卖股票的最佳时机 II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天...原创 2018-12-26 22:24:11 · 162 阅读 · 0 评论 -
Leetcode 121. 买卖股票的最佳时机(Python3)
121. 买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利...原创 2018-12-26 23:09:24 · 211 阅读 · 0 评论 -
Leetcode 20.有效的括号(Python3)
20.有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"...原创 2018-12-10 20:33:04 · 330 阅读 · 0 评论 -
Leetcode 102. 二叉树的层次遍历(Python3)
102. 二叉树的层次遍历给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]思路:1.BFSa.level...原创 2018-12-27 12:55:29 · 318 阅读 · 0 评论 -
Leetcode 67.二进制求和(Python3)
67. 二进制求和给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101" 代码:#add-binaryclass Solution: def原创 2018-12-17 12:04:06 · 426 阅读 · 0 评论 -
Leetcode 中用哈希表&集合实现的题目 如 242. 有效的字母异位词 (1,15,18,49)等五题(Python3)
这五道题的核心都是哈希表(HashTable)&集合(Set)对于Hash表首先介绍两个概念:a.哈希函数(Hash Function)b.哈希冲突(碰撞)(Hash Collisions) a.Hash Function:图里对应的数字是ASCII(https://baike.baidu.com/item/ASCII/309296?fr=aladdin),字母...原创 2018-12-22 16:44:59 · 613 阅读 · 1 评论 -
Leetcode 26.删除排序数组中的重复项(Python3)
26.删除排序数组中的重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组...原创 2018-12-11 15:38:46 · 130 阅读 · 0 评论 -
Leetcode 104. 二叉树的最大深度 & 111. 二叉树的最小深度(Python3)
这两道题差不多。思路:1.BFS2.DFS 104. 二叉树的最大深度说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。 1.BFS代码:class Solution(object): ...原创 2018-12-28 13:42:19 · 287 阅读 · 0 评论 -
Leetcode 73. 矩阵置零(Python3)
73. 矩阵置零给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例 2:输入: [ [0,1,2,0], [3,4,5,2], [...原创 2018-12-28 18:57:39 · 329 阅读 · 0 评论 -
Leetcode 中用树&二叉树&二叉搜索树以及98. 验证二叉搜索树(Python3)
这三道题的核心都是树(Tree)&二叉树(Binary Tree)&二叉搜索树(Binary Search Tree)这节老师主要讲解的内容a.Tree、Binary Tree、Binary Search Treeb.Graph Tree的概念图:Binary Tree的概念图:这里的二叉树是满二叉树,而满二叉树是一种特殊的完全二叉树。Gra...原创 2018-12-23 19:48:58 · 705 阅读 · 0 评论 -
Leetcode 27.移除元素(Python3)
27.移除元素给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且...原创 2018-12-12 13:24:09 · 195 阅读 · 0 评论 -
Leetcode 22. 括号生成(Python3)
22. 括号生成给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"] 思路:1.暴力法2.DFS回溯法 2的代码:class Solution(object)...原创 2018-12-29 13:41:03 · 708 阅读 · 0 评论 -
Leetcode 70.爬楼梯(Python3)
70. 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 +...原创 2018-12-18 20:56:30 · 314 阅读 · 0 评论 -
Leetcode 21. 合并两个有序链表(Python3)
21. 合并两个有序链表将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4 1.递归版class Solution(object): def mergeTwoLists(self, ...原创 2018-12-29 15:51:32 · 285 阅读 · 0 评论 -
Leetcode 236. 二叉树的最近公共祖先 & 235. 二叉搜索树的最近公共祖先(Python3)
236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] ...原创 2018-12-24 22:29:58 · 768 阅读 · 0 评论 -
Leetcode 168. Excel表列名称(Python3)
168. Excel表列名称给定一个正整数,返回它在 Excel 表中相对应的列名称。例如, 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ...示例 1:输入: 1输出: "A"示例 2:输入: 28...原创 2019-01-04 14:31:16 · 315 阅读 · 0 评论 -
Leetcode 51. N皇后(Python3)
51. N皇后n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例:输入: 4输出: [ [".Q..", // 解法 ...原创 2018-12-30 15:50:48 · 329 阅读 · 0 评论 -
Leetcode 83. 删除排序链表中的重复元素(Python3)
83. 删除排序链表中的重复元素给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3 1.递归版:class Solution(object): def deleteDu...原创 2018-12-30 18:20:47 · 234 阅读 · 0 评论 -
Leetcode 119. 杨辉三角 II(Python3)
119. 杨辉三角 II给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗? 代码:class Solution: def getRow(self, rowIndex): ...原创 2019-01-04 22:13:37 · 465 阅读 · 0 评论 -
Leetcode 231. 2的幂(Python3)
231. 2的幂给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false思想:位运算该题就是考察位运算熟悉不熟悉非位运算代码:class Solution: def isP...原创 2019-01-04 23:27:56 · 337 阅读 · 0 评论 -
Leetcode 123. 买卖股票的最佳时机 III(Python3)
123. 买卖股票的最佳时机 III给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票...原创 2019-01-10 16:40:31 · 1229 阅读 · 0 评论