
Leetcode
lMonster81
淡泊以明志,宁静以致远
展开
-
删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2 输出: 1->2示例 2:输入: 1->1->2->3->3 输出: 1->2->3class Solution {public: ListNode* deleteDuplicates(ListNode* he...原创 2018-10-11 23:05:35 · 320 阅读 · 0 评论 -
合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 =...原创 2018-10-11 23:06:12 · 120 阅读 · 0 评论 -
二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1" 输出: "100"示例 2:输入: a = "1010", b = "1011" 输出: "10101" class Solution {public: string addBinary(string原创 2018-10-11 23:06:44 · 199 阅读 · 0 评论 -
110Balanced Binary Tree平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]3 / \ 9 20 / \ 15 7返回 true 。 示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4]1 / \ 2 ...原创 2018-10-11 23:07:19 · 117 阅读 · 0 评论 -
107Binary Tree Level Order Traversal II二叉树的层次遍历II
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3] ] class Solution {public: int maxDep...原创 2018-10-11 23:07:51 · 115 阅读 · 0 评论 -
104Maximum Depth of Binary Tree二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3 / \ 9 20 / \ 15 7返回它的最大深度 3 。 class Solution {public: int maxDepth(TreeNode...原创 2018-10-11 23:08:26 · 116 阅读 · 0 评论 -
101Symmetric Tree对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [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说明:如果你可以运用递归和迭代两种方法解决这个问题,会很加分。 class Solution {...原创 2018-10-12 21:13:47 · 118 阅读 · 0 评论 -
100Same Tree相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] 输出: true示例 2:输入: 1 1 / \ 2 2 [1,2], [1,null,2] 输出: false示例 3:输入: 1 1 / \ / \ 2 1...原创 2018-10-12 21:13:53 · 142 阅读 · 0 评论 -
111Minimum Depth of Binary Tree二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3 / \ 9 20 / \ 15 7返回它的最小深度 2.在真实的面试中遇到过这道题?错误:class Solution {public:int minDept...原创 2018-10-12 21:16:18 · 227 阅读 · 0 评论 -
108Convert Sorted Array to Binary Search Tree将有序数组转化为平衡二叉树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 选取中间节点,再递归左边递归右...原创 2018-10-12 21:19:38 · 144 阅读 · 0 评论 -
112Path Sum
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22,5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。...原创 2018-10-12 21:20:15 · 150 阅读 · 0 评论 -
118Pascal's Triangle杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] class Solution {public: vector<vector<int> > genera...原创 2018-10-12 21:36:59 · 183 阅读 · 0 评论 -
119Pascal's Triangle II杨辉三角2
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3 输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗? class Solution {public: vector<int> getRow(int rowIndex) { ...原创 2018-10-12 21:40:27 · 159 阅读 · 0 评论 -
258Add Digits各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗? class Solution {public: int addDig...原创 2018-10-17 23:21:27 · 174 阅读 · 0 评论 -
268Missing Number缺失数字
给定一个包含 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 {public: i...原创 2018-10-17 23:21:53 · 159 阅读 · 0 评论 -
283Move Zeroes移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12] 输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 冒泡排序改进 class Solution {public: void moveZeroes(vector<in...原创 2018-10-17 23:22:24 · 136 阅读 · 0 评论 -
290Word Pattern单词模式
给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式。这里的遵循指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应模式。示例1:输入: pattern = "abba", str = "dog cat cat dog" 输出: true示例 2:输入:pattern = "abba",...原创 2018-10-17 23:22:51 · 125 阅读 · 0 评论 -
242Valid Anagram有效的字母异位词
给定两个字符串s和t,编写一个函数来判断t是否是s的一个字母异位词。示例1:输入: s = "anagram", t = "nagaram" 输出: true示例 2:输入: s = "rat", t = "car" 输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应...原创 2018-10-17 23:24:35 · 215 阅读 · 0 评论 -
257Binary Tree Paths二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入: 1 / \ 2 3 \ 5 输出: ["1->2->5", "1->3"] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 第一次错超出时间限制。然后加了几句不必要的代码然后就0ms过了??? st...原创 2018-10-17 23:37:23 · 128 阅读 · 0 评论 -
121Best Time to Buy and Sell Stock买股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利...原创 2018-10-14 23:38:49 · 117 阅读 · 0 评论 -
122Best Time to Buy and Sell Stock II买卖股票的最佳时机2
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交...原创 2018-10-14 23:39:26 · 116 阅读 · 0 评论 -
Valid Palindrome验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama" 输出: true示例 2:输入: "race a car" 输出: false 方法一:定义头尾指针,从头尾遍历判断字符是否相等(非数字/字符则跳过)。...原创 2018-10-14 23:40:11 · 134 阅读 · 0 评论 -
136Single Number只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1] 输出: 1示例 2:输入: [4,1,2,1,2] 输出: 4 两个相同的数相异或结果为0,那么把所有的数异或一次,剩下的就是那个只出现一次的。 c...原创 2018-10-14 23:42:10 · 114 阅读 · 0 评论 -
141Linked List Cycle循环链表
给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题? 官方题解:方法一:哈希表思路我们可以通过检查一个结点此前是否被访问过来判断链表是否为环形链表。常用的方法是使用哈希表。算法我们遍历所有结点并在哈希表中存储每个结点的引用(或内存地址)。如果当前结点为空结点 null(即已检测到链表尾部的下一个结点),那么我们已经遍历完整个链表,并且该链表...原创 2018-10-14 23:43:08 · 125 阅读 · 0 评论 -
155Min Stack最小栈
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack(); minStack.push(-2); minStack.push...原创 2018-10-14 23:45:15 · 144 阅读 · 0 评论 -
160Intersection of Two Linked Lists相交链表
编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表: a1 → a2 ↘ b1 → b2 → b3c1 → c2 → c3 ↗在节点 b1 开始相交。 注意:如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循...原创 2018-10-14 23:49:57 · 106 阅读 · 0 评论 -
167Two Sum II - Input array is sorted两数之和2输入有序数组
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], ...原创 2018-10-14 23:52:10 · 209 阅读 · 0 评论 -
169Majority Element求众数
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3] 输出: 3示例 2:输入: [2,2,1,1,1,2,2] 输出: 2 方法一:哈希class Solution {public: int majorityE...原创 2018-10-14 23:53:11 · 136 阅读 · 0 评论 -
168Excel表列名称
给定一个正整数,返回它在 Excel 表中相对应的列名称。例如,1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ...示例 1:输入: 1 输出: "A"示例 2:输入: 28 输出: "AB"示例 3:输入: 701 输出: "ZY" 相当于10进制转26进制..原创 2018-10-14 23:54:09 · 236 阅读 · 0 评论 -
Two Sum
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1] 解法一:暴力class Solution {public: vect...原创 2018-09-30 13:35:13 · 136 阅读 · 0 评论 -
171Excel Sheet Column Number表列序号
给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:输入: "A" 输出: 1示例 2:输入: "AB" 输出: 28示例 3:输入: "ZY" 输出: 701 26进制转回十进制 c..原创 2018-10-15 21:15:09 · 156 阅读 · 0 评论 -
172Factorial Trailing Zeroes阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。示例 2:输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。 求结果末尾有多少个零,如果有零则肯定能写成x * 10的k次方,有10出现则肯定有2和5出现,即可写成 x *...原创 2018-10-15 21:22:11 · 130 阅读 · 0 评论 -
189Rotate Array旋转数组
给定一个数组,将数组中的元素向右移动 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,3,99]...原创 2018-10-15 21:44:55 · 279 阅读 · 0 评论 -
191Number of 1 Bits位1的个数
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 :输入: 11 输出: 3 解释: 整数 11 的二进制表示为 00000000000000000000000000001011 示例 2:输入: 128 输出: 1 解释: 整数 128 的二进制表示为 00000000000000000000000010000000...原创 2018-10-15 21:45:47 · 129 阅读 · 0 评论 -
202Happy Number快乐数
编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例: 输入: 19 输出: true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02...原创 2018-10-15 21:46:21 · 156 阅读 · 0 评论 -
203Remove Linked List Elements移除链表元素
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5 class Solution {public: ListNode* removeElements(ListNode* head, int val) {...原创 2018-10-15 21:46:53 · 143 阅读 · 0 评论 -
204Count Primes计算质数
统计所有小于非负整数 n 的质数的数量。示例:输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 class Solution {public: int countPrimes(int n) { vector<int> visit(n, 0); for(int i = 0;...原创 2018-10-15 21:47:22 · 150 阅读 · 0 评论 -
205Isomorphic Strings同构字符串
给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = "egg", t = "add" 输出: true示例 2:输入: s = "foo", t = "bar" 输出: f...原创 2018-10-15 21:50:53 · 159 阅读 · 0 评论 -
190Reverse Bits反转二进制字节
颠倒给定的 32 位无符号整数的二进制位。示例:输入: 43261596 输出: 964176192 解释: 43261596 的二进制表示形式为 00000010100101000001111010011100 , 返回 964176192,其二进制表示形式为 00111001011110000010100101000000 。进阶:如果多次调用这个函数,你将如何优化你的算法...原创 2018-10-15 21:52:05 · 255 阅读 · 0 评论 -
198House Robber打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1] 输出: 4 解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 ...原创 2018-10-15 21:56:55 · 196 阅读 · 0 评论