
leetcode
SpringRolls
我是一只小拉吉
展开
-
leetcode刷题387 字符串中的第一个唯一字符 First Unique Character in a String(简单) Python Java
题目大意:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2.注意事项:您可以假定该字符串只包含小写字母。class Solution(object): def firstUniqChar(self, s): ""...原创 2019-08-23 13:58:21 · 200 阅读 · 0 评论 -
leetcode刷题108 将有序数组转换为二叉搜索树 Convert Sorted Array to Binary Search Tree(简单) Python Java
题目大意:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 /...原创 2019-08-02 10:25:14 · 181 阅读 · 0 评论 -
leetcode刷题172 阶乘后的零 Factorial Trailing Zeroes(简单) Python Java
题目描述:给定一个整数n,返回n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。解题思路:找阶乘得数里面有多少个5,因为每次只有5和2相遇时才会产生一个10,也就是会有一个“...原创 2019-08-06 11:27:27 · 195 阅读 · 0 评论 -
leetcode刷题191 位1的个数 Number of 1 Bits(简单) Python Java
题目大意:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’的个数(也被称为汉明重量)。示例1 :输入: 11输出: 3解释: 整数 11 的二进制表示为00000000000000000000000000001011示例2:输入: 128输出: 1解释: 整数 128 的二进制表示为 00000000000000000000000...原创 2019-08-08 11:36:59 · 150 阅读 · 0 评论 -
leetcode刷题101 对称二叉树 Symmetric Tree(简单) Python Java
题目大意:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[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-08-01 15:38:03 · 205 阅读 · 0 评论 -
leetcode刷题171 Excel表列序号 Excel Sheet Column Number(简单) Python Java
题目大意:给定一个Excel表格中的列名称,返回其相应的列序号。例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:输入: "A"输出: 1示例2:输入: "AB"输出: 28...原创 2019-08-05 15:39:35 · 314 阅读 · 0 评论 -
leetcode刷题125 验证回文串 Valid Palindrome(简单) Python Java
题目大意:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例1:输入: “A man, a plan, a canal: Panama”输出: true示例2:输入: “race a car”输出: false解法一:利用一个双指针,一个从前往后的left指针,一个从后...原创 2019-08-04 22:13:52 · 188 阅读 · 0 评论 -
leetcode刷题206 反转链表 Reverse Linked List(简单) Python Java
题目大意:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?解法一:思路:通过迭代将节点重组,前面的节点转移到重组链表的后面,实际上就是头结点的倒插操作。遍历链表,迭代前节点pr...原创 2019-07-23 16:23:52 · 226 阅读 · 0 评论 -
leetcode刷题69 x的平方根 Sqrt(x)(简单) Python Java
题目大意:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。解法一:使用二分查找法,对中间数进行判断,如果mi...原创 2019-07-31 14:53:32 · 433 阅读 · 0 评论 -
leetcode刷题66 加一 Plus One(简单) Python Java
题目:给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示...原创 2019-07-31 14:07:15 · 207 阅读 · 0 评论 -
leetcode刷题292 Nim游戏 Nim Game(简单) Python Java
题目描述:你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;因为无论你拿走 1 块、2 ...原创 2019-07-26 10:43:28 · 708 阅读 · 0 评论 -
leetcode刷题189 旋转数组 Rotate Array(简单) Python Java
题目大意:给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例 1:输入:[1, 2, 3, 4, 5, 6, 7] 和 k = 3输出:[5, 6, 7, 1, 2, 3, 4]解释:向右旋转 1 步:[7, 1, 2, 3, 4, 5, 6]向右旋转 2 步:[6, 7, 1, 2, 3, 4, 5]向右旋转 3 步:[5, 6, 7, 1, 2...原创 2019-08-06 13:39:20 · 182 阅读 · 0 评论 -
leetcode刷题118 杨辉三角 Pascal's Triangle(简单) Python Java
题目大意:给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]思路:第一步,根据给定的numRows,初始化相应的二维数组 第二部,根据杨辉三角的...原创 2019-08-02 14:19:50 · 252 阅读 · 0 评论 -
leetcode刷题198 打家劫舍 House Robber(简单) Python Java
题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ...原创 2019-08-09 14:00:28 · 233 阅读 · 0 评论 -
leetcode刷题371 两整数之和 Sum of Two Integers(简单) Python Java
题目大意:不使用运算符+和-,计算两整数a、b之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1class Solution(object): def getSum(self, a, b): """ :type ...原创 2019-08-22 10:18:44 · 215 阅读 · 0 评论 -
leetcode刷题204 计数质数 Count Primes(简单) Python Java
题目大意:统计所有小于非负整数n的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。解题思路:Eratosthenes 埃拉托斯特尼筛法是质数,同时划去所有2的倍数,接着查看剩下的数 是质数,同时划去所有3的倍数,接着查看剩下的数 一直进行到n的平方根(向上取整)。当你要画圈的素数的平方大于 ...原创 2019-08-13 11:28:34 · 288 阅读 · 0 评论 -
leetcode刷题242 有效的字母异位词Valid Anagram(简单) Python Java
题目大意给定两个字符串s和t,编写一个函数来判断t是否是s的一个字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否...原创 2019-08-16 13:21:19 · 271 阅读 · 0 评论 -
leetcode刷题350 两个数组的交集II Intersection of Two Arrays II(简单) Python Java
题目大意:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑输...原创 2019-08-21 11:28:26 · 232 阅读 · 0 评论 -
leetcode刷题326 3的幂 Power of Three(简单) Python Java
题目大意:给定一个整数,写一个函数来判断它是否是 3的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false class Solution(object): def isPowerOfThree(self, ...原创 2019-08-21 11:05:32 · 173 阅读 · 0 评论 -
leetcode刷题202 快乐数 Happy Number(简单) Python Java
题目描述编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:1² + 9² = 828² + 2² = 686² + 8² = 1001² + 0...原创 2019-08-12 11:07:17 · 504 阅读 · 0 评论 -
leetcode刷题234 回文链表 Palindrome Linked List(简单) Python Java
请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?# Definition for singly-linked list.# class ListNode(object):# ...原创 2019-08-15 10:59:13 · 270 阅读 · 0 评论 -
leetcode刷题283 移动零 Missing Number(简单) Python Java
题目大意:给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。class Solution(object): def moveZeroes(self, nums): "...原创 2019-08-20 11:08:39 · 190 阅读 · 0 评论 -
leetcode刷题268 缺失数字 Missing Number(简单) Python Java
题目大意给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?解法一:加总,求差class Solution: d...原创 2019-08-19 16:04:11 · 636 阅读 · 0 评论 -
leetcode刷题190 颠倒二进制位 Reverse Bits(简单) Python Java
题目描述:颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制...原创 2019-08-07 16:07:58 · 289 阅读 · 0 评论 -
leetcode刷题169 求众数 Majority Element(简单) Python Java
题目大意:给定一个大小为n的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2解法1:from collections import Counterclass So...原创 2019-07-22 16:08:21 · 281 阅读 · 0 评论 -
leetcode刷题237 删除链表中的节点 Delete Node in a Linked List(简单) Python Java
题目大意:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:4 -> 5 -> 1 -> 9示例1输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后...原创 2019-07-25 21:24:33 · 169 阅读 · 0 评论 -
leetcode刷题21 合并两个有序链表 Merge Two Sorted Lists(简单) Python Java
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 知识点: 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表...原创 2019-07-12 14:33:46 · 801 阅读 · 0 评论 -
leetcode刷题122 买卖股票的最佳时机 Best Time to Buy and Sell Stock II(简单) Python Java
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔...原创 2019-07-18 16:21:10 · 229 阅读 · 0 评论 -
leetcode刷题121 买卖股票的最佳时机 Best Time to Buy and Sell Stock(简单) Python Java
给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2019-07-18 13:39:51 · 172 阅读 · 0 评论 -
leetcode刷题14 最长公共前缀 Longest Common Prefix(简单) Python
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。class Soluti...转载 2019-07-11 17:59:04 · 571 阅读 · 0 评论 -
leetcode刷题70 爬楼梯 Climbing Stairs(简单) Python Java
假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2....原创 2019-07-15 18:25:48 · 255 阅读 · 0 评论 -
leetcode刷题9 回文数 Palindrome Number(简单) Python Java
题目描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例1:输入: 121输出: true示例2:输入: -121输出:假解释:从左向右读,为-121。从右向左读,为121-。因此它不是一个回文数。示例3:输入: 10输出: false解释:从右向左读,为01。因此它不是一个回文数。第一种方法,...原创 2019-07-11 11:19:05 · 371 阅读 · 0 评论 -
leetcode刷题53 最大子序和 Maximum Subarray(简单) Python Java
给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。思路一:遍历法,On:算法过程:遍历数组,用onesum去维护当前元素加起来的和。当onesum出现小于0的情况时,我们把它设为0。然...转载 2019-07-14 22:16:17 · 344 阅读 · 0 评论 -
leetcode刷题26 删除排序数组中的重复项 Remove Duplicates from Sorted Array(简单) Python Java
题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。...原创 2019-07-14 21:57:10 · 175 阅读 · 0 评论 -
leetcode刷题20 有效的括号 Valid Parentheses(简单) Python Java
给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false...原创 2019-07-10 15:42:32 · 334 阅读 · 0 评论 -
leetcode刷题 7 反转整数 Reverse Integer(简单) Python Java
给定一个 32 位有符号整数,将整数中的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意: 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。在写代码时一直报错,...原创 2019-07-09 18:03:27 · 211 阅读 · 0 评论 -
leetcode刷题88 合并两个有序数组 Merge Sorted Array(简单) Python Java
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:1.nums1 = [1,2,3,0,0,0], m = 3...原创 2019-07-16 19:56:24 · 191 阅读 · 0 评论 -
leetcode刷题136 只出现一次的数字 Single Number(简单) Python Java
题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解法1:重新申请一个列表s=[],遍历这个数组:1.如果不在这个新的列表中:...原创 2019-07-19 15:00:10 · 344 阅读 · 0 评论 -
leetcode刷题104 二叉树的最大深度 Maximum Depth of Binary Tree(简单) Python Java
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。解题思路: 当root为空时,返回深度0. 当roo...原创 2019-07-17 11:26:30 · 179 阅读 · 0 评论 -
leetcode刷题160 相交链表 Intersection of Two Linked Lists(简单) Python Java
题目描述:编写一个程序,找到两个单链表相交的起始节点。例如,下面的两个链表:在节点 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...转载 2019-07-21 22:11:21 · 168 阅读 · 0 评论