Leetcode刷题记录
孤帆扁舟去
这个作者很懒,什么都没留下…
展开
-
Leetcode: 206.Reverse List 反转链表
Reverse List 反转链表反转一个单链表。输入:1->2->3->4->5->NULL输出:5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?方法一:递归class Solution {public: ListNode* reverseList(...原创 2019-09-28 10:49:55 · 289 阅读 · 0 评论 -
Leetcode: 33. Search In Rotated Sorted Array搜索旋转排序数组
Search In Rotated Sorted Array搜索旋转排序数组假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。...原创 2019-09-27 10:36:26 · 162 阅读 · 0 评论 -
Leetcode: 26. Remove Duplicates From Sorted Array删除排序数组中的重复项
Remove Duplicates From Sorted Array删除排序数组中的重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。输入:nums = [1,1,2], 输出:2函数应该返回新的长度 2, 并且原数组 nums 的前...原创 2019-09-27 09:59:54 · 257 阅读 · 0 评论 -
Leetcode: 23. Merge K Sorted Lists 合并K个排序链表
Merge K Sorted Lists 合并K个排序链表合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。输入:[ 1->4->5, 1->3->4, 2->6]输出:1->1->2->3->4->4->5->6方法一:堆注意自己写排序的格式 auto ...原创 2019-09-27 09:45:52 · 146 阅读 · 0 评论 -
Leetcode: 21. Merge Two Sorted Lists 合并两个有序链表
Merge Two Sorted Lists 合并两个有序链表将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:1->2->4, 1->3->4输出:1->1->2->3->4->4方法一/** * Definition for singly-linked list. *...原创 2019-09-26 23:57:13 · 169 阅读 · 0 评论 -
Leetcode: 20.Valid Parentheses有效的括号
Valid Parentheses有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。输入:"()"输出:true输入:"([)]"输出:false方法一:堆利用后进先出特性class...原创 2019-09-26 23:47:27 · 144 阅读 · 0 评论 -
Leetcode: 16.3Sum Closest 最接近的三数之和
3Sum Closest 最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。输入:nums = [-1,2,1,-4], target = 1.输出:2最接近的三数之和为2(-1 + 2 + 1 = 2).方法一:双指针固定...原创 2019-09-26 23:26:35 · 160 阅读 · 0 评论 -
Leetcode: 15. 3Sum 三数之和
3Sum 三数之和给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。输入:nums = [-1, 0, 1, 2, -1, -4],输出:[ [-1, 0, 1], [-1, -1, 2]]方法一:双指针用TwoSum...原创 2019-09-26 23:10:18 · 160 阅读 · 0 评论 -
Leetcode: 14. Longest Common Prefix 最长公共前缀
Longest Common Prefix 最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。说明:所有输入只包含小写字母 a-z 。输入:["flower","flow","flight"]输出:"fl"输入:["dog","racecar","car"]输出:""解释: 输入不存在公共前缀。方法一从前往后...原创 2019-09-26 22:30:44 · 139 阅读 · 0 评论 -
Leetcode:662.Design Circular Queue 设计循环队列
Design Circular Queue 设计循环队列设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存...原创 2019-09-18 14:08:38 · 981 阅读 · 0 评论 -
Leetcode: 43. Multiply Strings字符串相乘
Multiply Strings字符串相乘给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。输入:num1 = "123", num2 = "456"输出:"56088"说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头...原创 2019-09-27 11:14:21 · 148 阅读 · 0 评论 -
Leetcode: 46. Permutations全排列
Permutations 全排列给定一个没有重复数字的序列,返回其所有可能的全排列。输入:[1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]方法一:用visited数组记录是否被访问。递归一次得到一个组合,之后将visited清零。class Solution {pu...原创 2019-09-27 11:32:55 · 157 阅读 · 0 评论 -
Leetcode: 47. Permutations II 全排列
Permutations II 全排列给定一个有重复数字的序列,返回其所有可能的全排列。输入:[1,2,1]输出:[ [1,1,2], [1,2,1], [2,1,1]]方法一:回溯在46题的基础上增加去重即可1.排序sort(nums.begin(),nums.end());2.去重if(i>0&&nums[i]==nums[i-1]...原创 2019-09-27 11:38:51 · 139 阅读 · 0 评论 -
Leetcode: 148.Sorted List 排序链表
Sorted List 排序链表在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。输入:4->2->1->3输出:1->2->3->4方法一:归并排序归并排序的核心是一个 merge() 函数,其主要是合并两个有序链表,这个在 LeetCode 中也有单独的题目 21.Merge Two Sorted Lists合并...原创 2019-09-27 16:26:30 · 162 阅读 · 0 评论 -
Leetcode: 146. LRU Cache LRU缓存机制
LRU Cache LRU缓存机制运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) -如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该...原创 2019-09-27 15:58:54 · 233 阅读 · 0 评论 -
Leetcode: 124. Binary Tree Maximum Path Sum 二叉树中的最大路径和
Binary Tree Maximum Path Sum 二叉树中的最大路径和给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。输入:[1,2,3] 1 / \ 2 3输出:6方法一:递归思路来源于:ikaruga 链接二叉树abc,a...原创 2019-09-27 15:11:47 · 178 阅读 · 0 评论 -
Leetcode: 104. Maximum Depth Of Binary Tree 二叉树的最大深度
Maximum Depth Of Binary Tree 二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。输入:[3,9,20,null,null,15,7],输出:3返回它的最大深度 3方法一:递归二叉树的最大深度即为1+左右子树的最大深度class Solution {...原创 2019-09-27 14:24:43 · 163 阅读 · 0 评论 -
Leetcode: 78. Subset 子集
Subset 子集给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。输入:nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]方法一:递归注意level的含义注意递归函数里写的是i+1而不是level+...原创 2019-09-27 14:01:28 · 162 阅读 · 0 评论 -
Leetcode: 61. Rotate List 旋转链表
Rotate List 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。输入:1->2->3->4->5->NULL, k = 2输出:4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 ...原创 2019-09-27 13:33:55 · 169 阅读 · 0 评论 -
Leetcode: 59. Spiral Matrix II 螺旋矩阵II
Spiral Matrix II 螺旋矩阵II给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。输入:3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]方法一:模拟螺旋遍历用left,right,up,down记录class Solution {public: vecto...原创 2019-09-27 13:18:35 · 165 阅读 · 0 评论 -
Leetcode: 54. Spiral Matrix 螺旋矩阵
Spiral Matrix 螺旋矩阵给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出:[1,2,3,6,9,8,7,4,5]方法一:模拟螺旋遍历用left,right,up,down记录class Solution {p...原创 2019-09-27 12:54:30 · 185 阅读 · 0 评论 -
Leetcode: 53.Maximum Subarray 最大子序和
Maximum Subarray 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入:[-2,1,-3,4,-1,2,1,-5,4],输出:6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。class Solution {public: int maxSubArray(vector<i...原创 2019-09-27 11:46:50 · 153 阅读 · 0 评论 -
Leetcode:887.Super Egg Drop鸡蛋掉落
你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X &l...原创 2019-09-18 13:26:49 · 187 阅读 · 0 评论 -
Leetcode:448. find-all-numbers-disappeared-in-an-array 找到所有数组中消失的数字
find-all-numbers-disappeared-in-an-array 找到所有数组中消失的数字给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空...原创 2019-09-18 11:23:13 · 342 阅读 · 0 评论 -
Leetcode: 268.Missing Number 缺失数字
给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。输入:[3,0,1]输出:2输入:[9,6,4,2,3,5,7,0,1]输出:8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?方法一:公式法将0~n的和与数组的n个数字的和相减,得到的值即为缺失的数字public: int ...原创 2019-09-18 11:18:12 · 302 阅读 · 0 评论 -
Leetcode: 6.Zigzag Conversion Z字形变换
Zigzag Conversion Z字形变换待更新原创 2019-08-31 12:51:04 · 141 阅读 · 0 评论 -
Leetcode: 5.Longest Palindromic Substring 最长回文子串
Longest Palindromic Substring 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。输入:"babad"输出:"bab"注意: “aba” 也是一个有效答案。方法1:遍历以每个字符为中心,向两边扩散,判断是否为回文串注意对于shidbaaaaab这种中间连续重复字母时,可以直接跳过class So...原创 2019-08-30 22:20:56 · 166 阅读 · 0 评论 -
Leetcode: 4.Median of Two Sorted Arrays寻找两个有序数组的中位数
Median of Two Sorted Arrays两数相加寻找两个有序数组的中位数给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。输入:nums1 = [1, 3]nums2 = [2]输出:2.0输入:n...原创 2019-08-30 21:42:05 · 551 阅读 · 0 评论 -
Leetcode: 3.Longest Sub-string Without Repeating Characters 无重复字符的最长子串
Longest Sub-string Without Repeating Characters 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。输入:"abcabcbd"输出:3因为无重复字符的最长子串是 “abc”,所以其长度为 3。方法一:HashMap+滑动窗口遍历每个字符s[i],用HashMap存储字符出现的位置,并查找之前是否...原创 2019-08-30 21:15:25 · 216 阅读 · 0 评论 -
Leetcode: 2.Add Two Numbers 两数相加
Add Two Numbers 两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:2 -> 4 -> 3 5 -> 6 -> 4输出:7...原创 2019-08-30 20:55:07 · 834 阅读 · 0 评论 -
Leetcode: 1.Two Sum 两数之和
Two Sum 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。输入:nums = [2, 7, 11, 15], target = 9输出:[0, 1]因为 nums[0] + nums[1] = 2 + 7 = 9...原创 2019-08-30 17:39:16 · 1535 阅读 · 0 评论 -
Leetcode编程题:腾讯精选练习50题
难度简单:27 中等:22 困难:3题目类型数组:字符串:二叉树:动态规划:题号题目难度标签2两数相加中等4寻找两个有序数组的中位数困难5最长回文子串中等7整数反转简单8字符串转换整数 (atoi)中等9*回文数简单11盛最多水的容器中等14最长公共前缀简单15三数之和...原创 2019-08-30 17:18:33 · 794 阅读 · 0 评论 -
Leetcode编程题:高频题100道
难度简单:26 中等:59 困难:15题目类型数组:字符串:二叉树:动态规划:题号题目难度标签1两数之和简单2两数相加中等3无重复字符的最长子串中等4寻找两个有序数组的中位数困难5最长回文子串中等10正则表达式匹配困难11盛最多水的容器中等15三数之和中等17电话号码的...原创 2019-08-30 17:08:18 · 8039 阅读 · 0 评论 -
Leetcode编程题:精选面试高频题目150道
Leetcode精选面试高频题目150道难度简单:47 中等:76 困难:22题目类型数组:字符串:二叉树:动态规划:题号题目难度标签1两数之和简单2两数相加中等3无重复字符的最长子串中等4寻找两个有序数组的中位数困难5最长回文子串中等7整数反转简单8字符串转换整数 (atoi)中等...原创 2019-08-30 16:53:34 · 1143 阅读 · 1 评论 -
Leetcode: 7.Reverse Interger 整数反转
Longest Palindromic Substring 最长回文子串给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。输入:-123输出:-321输入:120输出:21方法1:数学方法利...原创 2019-08-31 12:59:00 · 149 阅读 · 0 评论 -
Leetcode: 8.String to Integer atoi() 整数反转
8.String to Integer atoi() 整数反转请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符...原创 2019-08-31 13:11:50 · 293 阅读 · 0 评论 -
Leetcode: 9.Palindrome Number 回文数
Palindrome Number 回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。输入:-123输出:false输入:121输出:true方法1:整数转为字符串先将 整数转为字符串 ,然后将字符串分割为数组,只需要循环数组的一半长度进行判断对应元素是否相等即可。但题目要求不能转换为字符串方法2:数学解法通过...原创 2019-08-31 13:25:02 · 135 阅读 · 0 评论 -
Leetcode: 15. 3 Sum 三数之和
3 Sum 三数之和给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。输入: nums = [-1, 0, 1, 2, -1, -4],输出:[ [-1, 0, 1], [-1, -1, 2]]方法一:双指针法如果我们随...原创 2019-09-18 10:55:30 · 260 阅读 · 0 评论 -
网易互娱游戏研发面经及答案:算法编程题
算法编程题排序 参考我的博客常考的有:冒泡排序、快速排序、归并排序、堆排序写一个lower_bound()函数 参考我的博客手写全排列,并分析算法的复杂度。没有重复数字的:leetcode 46题,参考我的博客有重复数字的:leetcode 46题,参考我的博客给两个有序数组,怎样求第n大的数?(不能用辅助空间,最优方案?)给一个无序数组,怎样求第n大的数?(不能用set,map...原创 2019-09-17 22:26:05 · 2882 阅读 · 0 评论 -
Leetcode: 47. Permutations II 全排列 II
Permutations II 全排列 II输入:[1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]解法1:回溯(剪枝)vector<vector<int>> permuteUnique(vector<int>& num) { vector<vector<int>...原创 2019-09-17 22:21:08 · 213 阅读 · 0 评论