Leetcode
我这个人很任性的
这个作者很懒,什么都没留下…
展开
-
Leetcode 19 删除链表的倒数第 n 个节点
题目描述给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。解法:两次遍历思路我们注意到这个问题可以容易地简化成另一个问题:删除从列表开头数起的第 ...原创 2019-08-18 17:12:46 · 77 阅读 · 0 评论 -
Leetcode 204 计数质数
题目描述统计所有小于非负整数n的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。质数定义:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。class Solution {public: int countPrimes(int n) { ...原创 2019-08-16 09:27:28 · 99 阅读 · 0 评论 -
Leetcode 172 阶乘后的零
题目描述给定一个整数n,返回n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释:3! = 6, 尾数中没有零。示例2:输入: 5输出: 1解释:5! = 120, 尾数中有 1 个零.5! 一个010!两个015!三个020!四个025!六个0 ==> 25/5=5 5/5=1 5+1=630!七个0class S...原创 2019-08-16 09:27:14 · 101 阅读 · 0 评论 -
Leetcode 125 验证回文串
题目描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false解法:双指针class Solution {public: ...原创 2019-08-16 09:27:01 · 76 阅读 · 0 评论 -
Leetcode 191 位1的个数
题目描述编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’的个数(也被称为汉明重量)。解法:我们遍历数字的 32 位。如果某一位是 1,将计数器加一。我们使用 位掩码 来检查数字的第 i 位。一开始,掩码 m=1 因为 1 的二进制表示是00000000000000000000000000000001显然,任何数字跟掩码 1 进行逻辑与运...原创 2019-08-16 09:26:51 · 99 阅读 · 0 评论 -
Leetcode 326 3的幂
给定一个整数,写一个函数来判断它是否是 3的幂次方。解法:循环迭代n如果3的幂次方n = 3*3......*3;n = 3^x因此,应该可以将n除以3x 次,每次都有 0 的余数,最终结果是 1。class Solution {public: bool isPowerOfThree(int n) { if(n < 1) ...原创 2019-08-16 09:26:43 · 115 阅读 · 0 评论 -
Leetcode 237 删除链表中的节点
题目描述请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 --head =[4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9....原创 2019-08-16 09:26:30 · 107 阅读 · 0 评论 -
Leetcode 344 反转字符串
题目描述编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。解法:双指针,交换头尾两个指针所指的两个位置的值,指针向中间移动一个位置,重复以上操作,直到两个指针交错;cla...原创 2019-08-16 09:26:19 · 126 阅读 · 0 评论 -
Leetcode 118 杨辉三角
题目描述给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1],[1,4,6,4,1]]class Solution {public: vector<vector<i...原创 2019-08-15 17:31:28 · 129 阅读 · 0 评论 -
Leetcode 2 两数相加
题目描述:给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -&g...原创 2019-08-11 16:50:51 · 73 阅读 · 0 评论 -
Leetcode 88 合并两个有序数组
题目描述给定两个有序整数数组nums1 和 nums2,将 nums2 合并到nums1中,使得num1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nu...原创 2019-08-15 12:25:12 · 61 阅读 · 0 评论 -
Leetcode 69 x的平方根
题目描述实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。思路:class Solution {...原创 2019-08-15 10:28:25 · 68 阅读 · 0 评论 -
Leetcode 66 加一
题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 43...原创 2019-08-15 10:07:44 · 74 阅读 · 0 评论 -
Leetcode 38 报数
题目描述报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211被读作"one 1"("一个一") , 即11。11 被读作"two 1s"("两个一"), 即21。21 被读作"one 2", "one 1"("一个二",...原创 2019-08-15 10:07:53 · 114 阅读 · 0 评论 -
Leetcode 26 删除排序数组中的重复项
题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示...原创 2019-08-15 10:08:27 · 62 阅读 · 0 评论 -
Leetcode 461 汉明距离
题目描述两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数x和y,计算它们之间的汉明距离。输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。解法:异或,相同为0,不同为1.利用异或的特性,先将两数x和...原创 2019-08-15 10:08:38 · 84 阅读 · 0 评论 -
Leetcode 538 把二叉树转化为累加树
题目描述给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。BST的中序遍历就是从小到大,那么反过来就是从大到小,然后累加就好了./** * Definition for a binary tree node. * struct TreeNode { * int...原创 2019-08-15 10:08:46 · 121 阅读 · 0 评论 -
Leetcode 217 存在重复元素
题目描述给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true思路:排序+前后比较c...原创 2019-08-16 09:27:51 · 82 阅读 · 0 评论 -
Leetcode 190 颠倒二进制位
题目描述颠倒给定的 32 位无符号整数的二进制位思路位运算class Solution {public: uint32_t reverseBits(uint32_t n) { uint32_t res = 0; int index = 32; while(index--) { res...原创 2019-08-16 09:28:03 · 141 阅读 · 0 评论 -
Leetcode 189 旋转数组
题目描述给定一个数组,将数组中的元素向右移动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,3,4]示例2:输入: [-1,-100,...原创 2019-08-16 09:28:13 · 77 阅读 · 0 评论 -
Leetcode 11 盛最多水的容器
题目描述给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。解法:如题意,垂直的两条线段将会与坐标轴构成一个矩形区域,较短线段的长度将会作为矩形区域的宽度,两线间距将会作为矩形区域的长度,而...原创 2019-08-18 17:12:38 · 87 阅读 · 0 评论 -
Leetcode 8 字符串转为整数
题目描述请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符...原创 2019-08-17 15:17:13 · 68 阅读 · 0 评论 -
Leetcode 14 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。思路最长公共前缀不会超过最小的字符串,逐个字...原创 2019-08-13 10:21:42 · 87 阅读 · 0 评论 -
leetcode 13 罗马数字转整数
罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。1...原创 2019-08-13 09:57:03 · 65 阅读 · 0 评论 -
Leetcode 9 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。解法1...原创 2019-08-12 22:14:15 · 122 阅读 · 0 评论 -
Leetcode 7 整数反转
题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,请根据这个假设,如果反转后整数溢出那么就返回 0。如何判断溢出是关键这个溢出这么难判断的原因就是使用...原创 2019-08-12 20:52:28 · 77 阅读 · 0 评论 -
Leetcode 122 买卖股票的最佳时机II
题目描述:给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候...原创 2019-08-17 10:00:03 · 84 阅读 · 0 评论 -
Leetcode 108 将有序数组转化为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /...原创 2019-08-17 10:00:12 · 110 阅读 · 0 评论 -
Leetcode 202 快乐数
题目描述编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。在这里首先了解一个小知识 , 当快乐数始终变不了1 , 陷入无限循环时 , 最终得到的结果就会是4 , 所以只需要判断结果是否等于4 , 如果为...原创 2019-08-17 10:00:20 · 96 阅读 · 0 评论 -
Leetcode 171 Excel表列序号
题目描述给定一个Excel表格中的列名称,返回其相应的列序号。例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:输入: "A"输出: 1示例2:输入: "AB"输出: 28示例3:输入:...原创 2019-08-17 10:00:26 · 115 阅读 · 0 评论 -
Leetcode 242 整数反转
题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false思路:首先先判断两个字符串的长度是否一样,若不一样则返回false; 定义一个包含26个整数的数组cNum,用于保...原创 2019-08-17 09:59:36 · 84 阅读 · 0 评论 -
Leetcode 412 Fizz Buzz
题目描述:写一个程序,输出从 1 到 n 数字的字符串表示。1. 如果n是3的倍数,输出“Fizz”;2. 如果n是5的倍数,输出“Buzz”;3.如果n同时是3和5的倍数,输出 “FizzBuzz”。class Solution {public: vector<string> fizzBuzz(int n) { vector...原创 2019-08-17 09:59:28 · 99 阅读 · 0 评论 -
Leetcode 387 字符串中的第一个唯一字符
题目描述给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2.注意事项:您可以假定该字符串只包含小写字母。解法:通常定义一个长度为26的数组,数组的每一位代表一个字母abcd.....z其中数组中的值标记字符串中 每一个 字符对应出现的次数...原创 2019-08-17 09:59:15 · 132 阅读 · 0 评论 -
Leetcode 371 两个整数之和
题目描述不使用运算符+ 和-,计算两整数a、b之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1思路1 0 11 1 00 1 10 0 0通过观察异或运算的真值表,与加法的真值表特别地像。需要注意的是异或只看本位,加法可能需要进位。从而用到与运算&1 0 11 ...原创 2019-08-17 09:59:06 · 165 阅读 · 0 评论 -
Leetcode 268 缺失数字
题目描述给定一个包含 0, 1, 2, ..., n中n个数的序列,找出 0 .. n中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例2:输入: [9,6,4,2,3,5,7,0,1]输出: 8解法:我们可以用高斯求和公式求出 [0..n]的和,减去数组中所有数的和,就得到了缺失的数字。class Solution {...原创 2019-08-17 09:59:22 · 143 阅读 · 0 评论 -
Leetcode 543 二叉树的直径
题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。思路:直径长度=路径的节点数-1;以每个节点为“根节点”的最长路径,找出最大值。最长路径上的节点数是 1+左子树深度+右子树深度树深度是1+max(左子树深度,右子树深度)递归。核心递归函数必须同时有两个作用:1.比出最长路径;2.计算深度...原创 2019-08-15 10:08:54 · 98 阅读 · 0 评论 -
Leetcode 617 二叉树合并
题目描述:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。解法:递归/** * Definition for a binary tree node. * struct TreeN...原创 2019-08-15 10:09:16 · 218 阅读 · 0 评论 -
leetcode 437 路径综合III
题目简介给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数解法:对于本题需要先递归将每一个节点作为起始点,然后从该节点递归求解从其开始各个路径之和,当到达根...原创 2019-08-14 19:31:00 · 133 阅读 · 0 评论 -
Leetcode 53 最大子序和
给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。思路:动态规划动态规划的是首先对数组进行遍历,当前最大连续...原创 2019-08-13 20:34:44 · 78 阅读 · 0 评论 -
Leetcode 70 爬楼梯
假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶...原创 2019-08-13 19:56:50 · 82 阅读 · 0 评论