每天一道leetcode
画画讲故事的神仙
自然语言处理 知乎专栏-机器学习修炼手册 https://zhuanlan.zhihu.com/c_1072857204125765632
展开
-
一维数组峰值
题目背景:一个数组N个数,里面数满足先增后减(请考虑单调递增和递减),请找出数组最大值。要求:不适用额外空间,考虑时间时间复杂度log(N)tips:一般情况,从任意一点划分数据集,产生一个先增后减的区间和另一个单调递减的区间。def thepeak(arr): l = 0 r = len(arr) - 1 while l < r: #单调 ...原创 2018-03-08 15:00:57 · 970 阅读 · 0 评论 -
leetcode 1 两数之和
题目给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]...原创 2019-05-13 20:13:04 · 91 阅读 · 0 评论 -
leetcode 70 爬楼梯
题目假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶...原创 2019-05-13 20:56:31 · 194 阅读 · 0 评论 -
leetcode 198 打家劫舍
题目你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,...原创 2019-05-13 23:20:55 · 85 阅读 · 0 评论 -
leetcode 303 区域和检索-数组不可变
题目给定一个整数数组 nums,求出数组从索引i到j(i≤j) 范围内元素的总和,包含i, j两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3说明:你可...原创 2019-05-13 23:57:30 · 187 阅读 · 0 评论 -
leetcode 155 最小栈
题目设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。 pop()-- 删除栈顶的元素。 top()-- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack...原创 2019-05-19 10:51:20 · 113 阅读 · 0 评论 -
leetcode 344 反转字符串
题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组char[]的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是ASCII码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]...原创 2019-05-19 10:58:23 · 106 阅读 · 0 评论 -
leetcode 541 反转字符串(2)
题目给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。示例:输入: s = "abcdefg", k = 2输出: "bacdfeg"要求:该字符串只包含小写的英文字母。 给定字符串的长...原创 2019-05-19 11:41:34 · 123 阅读 · 0 评论 -
leetcode 反转字符串中的单词(3)
题目给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc"注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。代码class Solution(object):...原创 2019-05-19 11:48:59 · 119 阅读 · 0 评论 -
leetcode 160 相交链表
题目编写一个程序,找到两个单链表相交的起始节点。注意:如果两个链表没有交点,返回null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。代码小结:先将长的链表遍历到长度和短的链表长度一致,然后同时遍历比较两个链表,第一个相同的节点就是相交起点。# Definition for...原创 2019-05-19 14:49:20 · 188 阅读 · 0 评论 -
leetcode 9 回文数
题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是...原创 2019-05-19 15:21:08 · 147 阅读 · 0 评论 -
leetcode 7 整数反转
题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 ...原创 2019-05-19 16:11:41 · 116 阅读 · 0 评论 -
leetcode 14 最长公共前缀
题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。代码class Solu...原创 2019-05-19 17:02:11 · 122 阅读 · 0 评论 -
leetcode 20 有效的括号
题目给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: fa...原创 2019-05-19 18:04:39 · 118 阅读 · 0 评论 -
leetcode 746 使用最小花费爬楼梯
题目数组的每个索引做为一个阶梯,第i个阶梯对应着一个非负数的体力花费值cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例1:输入: cost = [10, 15, 20]输出: 15解释: 最低花...原创 2019-05-14 19:53:20 · 82 阅读 · 0 评论 -
leetcode 5 最长回文子串
题目给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"代码新鲜现做 幸福codingclass Solution(object): def longestPalindrome...原创 2019-05-14 20:28:46 · 76 阅读 · 0 评论 -
README
系列文章出发角度为应对大厂算法工程师面试。第一期针对leetcode中easy 300+的题目做解答。 所有答案(除非特殊说明)均为本人用python手动编写完成,并且通过了所有测试case。 为了便于通过面试,所有答案均经过本人思考后,认为是较容易得分,不容易出错(面试过程中卡壳)的思路。欢迎评论反驳,共同提高。 想清楚解题思路再做 再简单的题目 也可能会出错。要自己动手coding ...原创 2019-05-14 20:37:43 · 169 阅读 · 0 评论 -
leetcode 83 删除排序链表中的重复元素
题目给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3代码新鲜现做 幸福coding# Definition for singly-linked list.# class L...原创 2019-05-15 14:09:30 · 82 阅读 · 0 评论 -
leetcode 88 合并两个有序数组
题目给定两个有序整数数组nums1和nums2,将nums2合并到nums1中,使得num1成为一个有序数组。说明:初始化nums1和nums2的元素数量分别为m和n。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存nums2中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3num...原创 2019-05-15 15:42:10 · 115 阅读 · 0 评论 -
leetcode 100 相同的树
题目给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: ...原创 2019-05-15 16:43:28 · 84 阅读 · 0 评论 -
leetcode 349 两个数组的交集
题目给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。代码写法一:class ...原创 2019-05-20 20:48:37 · 149 阅读 · 0 评论 -
leetcode 389 找不同
题目给定两个字符串s和t,它们只包含小写字母。字符串t由字符串s随机重排,然后在随机位置添加一个字母。请找出在t中被添加的字母。示例:输入:s = "abcd"t = "beadc"输出:e解释:'e' 是那个被添加的字母。代码思路同leetcode 126 只出现一次的数字class Solution(object):...原创 2019-05-20 21:40:03 · 126 阅读 · 0 评论 -
leetcode 28 实现strStr
实现strStr()函数。给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needl...原创 2019-05-10 20:22:48 · 100 阅读 · 0 评论 -
leetcode 101 对称二叉树
题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3]是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3]则不是镜像对称的: 1 / \ 2 2 \ \ 3 3说明:如果你可以运用递归和迭代两...原创 2019-05-15 17:22:37 · 71 阅读 · 0 评论 -
leetcode 104 二叉树的最大深度
题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。代码# Definition for a binary tree...原创 2019-05-15 19:06:19 · 89 阅读 · 0 评论 -
leetcode 111 二叉树的最小深度
题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.代码# Definition for a binary tre...原创 2019-05-15 19:41:10 · 123 阅读 · 0 评论 -
leetcode 107 二叉树的层次遍历2
题目给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]代码下面代码未能通过c...原创 2019-05-15 20:18:50 · 84 阅读 · 0 评论 -
leetcode 21 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来自https://leetcode-cn.com/problems/merge-two-sorted-lists/# Definition fo...原创 2019-05-11 07:17:45 · 85 阅读 · 0 评论 -
leetcode 110 平衡二叉树
题目给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回true。示例 2:给定二叉树[1,2,2,3,3,null,...原创 2019-05-16 09:22:50 · 88 阅读 · 0 评论 -
leetcode 437 路径总和(3)
题目给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum ...原创 2019-05-24 21:25:11 · 128 阅读 · 0 评论 -
leetcode 121 买卖股票的最佳时机
题目给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 ...原创 2019-05-11 20:23:17 · 78 阅读 · 0 评论 -
leetcode 122 买卖股票的最佳时机2
题目给定一个数组,它的第i个元素是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出...原创 2019-05-11 20:26:56 · 96 阅读 · 0 评论 -
leetcode 112 路径总和
题目给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4...原创 2019-05-16 14:09:27 · 95 阅读 · 0 评论 -
leetcode 167 两数之和2-输入有序数组
题目给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值index1 和 index2,其中 index1必须小于index2。说明:返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, ...原创 2019-05-16 14:24:34 · 88 阅读 · 0 评论 -
leetcode 35 搜索插入位置
题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,...原创 2019-05-12 11:50:19 · 69 阅读 · 0 评论 -
leetcode 53 最大子序和
题目给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。代码新鲜现做 幸福codingclass Solution(object): def maxSubArray(self, ...原创 2019-05-12 14:08:07 · 88 阅读 · 0 评论 -
leetcode 58 最后一个单词的长度
题目给定一个仅包含大小写字母和空格' '的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5代码新鲜先做 幸福codingclass Solution(object): def lengthOfLastWord(self,...原创 2019-05-12 14:19:42 · 75 阅读 · 0 评论 -
leetcode 67 二进制求和
题目给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字1和0。示例1:输入: a = "11", b = "1"输出: "100"示例2:输入: a = "1010", b = "1011"输出: "10101"代码新鲜现做 幸福codingclass Solution(object): def addB...原创 2019-05-12 16:47:07 · 90 阅读 · 0 评论 -
leetcode 125 验证回文串
题目给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false代码class Solution(object): def...原创 2019-05-16 19:49:06 · 81 阅读 · 0 评论 -
leetcode 126 只出现一次的数字
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4代码class Solution(object): def singleNu...原创 2019-05-16 20:08:48 · 102 阅读 · 0 评论