
leetcode
hello_noob
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2、两数相加
题目要求:给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 示例 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 思路:l1长度为m,l2长度为n。时间复杂度O(max(m,n)...原创 2019-05-02 14:18:08 · 103 阅读 · 0 评论 -
23、合并K个排序链表
合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 方法一:归并法 思想: 借助归并排序的思想,对两两链表进行归并。结束条件为链表数量为1。 //合并两条链表 Lis...原创 2019-05-04 11:06:08 · 130 阅读 · 0 评论 -
24、两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 给定 1->2->3->4, 你应该返回 2->1->4->3. 方法一:递归法(动态规划) 思路: 【1】对于链表pre->p->other交换结点 【2】变成p->pre->other 【3】再对other进行翻转。 若other为NULL说明不用再翻转。...原创 2019-05-05 08:52:12 · 156 阅读 · 0 评论 -
25、k个一组翻转链表
给出一个链表,每k个节点一组进行翻转,并返回翻转后的链表。 k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么将最后剩余节点保持原有顺序。 给定这个链表:1->2->3->4->5 当k= 2 时,应当返回:2->1->4->3->5 当k= 3 时,应当返回:3->2->1->...原创 2019-05-05 08:55:30 · 155 阅读 · 0 评论 -
26、 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。 你不需要考虑数组中超出新长度后面的元...原创 2019-05-05 08:59:27 · 286 阅读 · 0 评论 -
31、下一个排列
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。 1,2,3→1,3,2 3,2,1→1,2,3 1,1,5→1,5,1 这道题写了很久没有思路,所以看了官方给出的题解...转载 2019-05-05 09:03:48 · 126 阅读 · 0 评论 -
32、最长有效括号
给定一个只包含'('和')'的字符串,找出最长的包含有效括号的子串的长度。 输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()" 输入: ")()())" 输出: 4 解释: 最长有效括号子串为 "()()" 方法一: 递归法 思路:使用递归超出内存限制 【1】对于字符串str从左往右数,记录左括号'('和右括号')'的数量。 【2】若出现右括号数>左括...原创 2019-05-05 09:10:13 · 276 阅读 · 0 评论 -
33、 搜索旋转排序数组
假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是O(logn) 级别。 输入: nums = [4,5,6,7,0,1,2], targe...原创 2019-05-05 09:14:06 · 184 阅读 · 0 评论 -
34、在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组nums,和一个目标值target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是O(logn) 级别。 如果数组中不存在目标值,返回[-1, -1]。 输入: nums = [5,7,7,8,8,10], target = 8 输出: [3,4] 方法一:递归法 思路:与33的思想类似 【1】找到中间结点并与target...原创 2019-05-05 09:16:22 · 254 阅读 · 0 评论 -
36、有效的数独
判断一个9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可 数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次 数独部分空格内已填入了数字,空白格用'.'表示。 方法一:一遍遍历 思路:时间复杂度O(1),空间复杂度O(1) 【1】对9*9的数组进行一遍遍历,对行遍...原创 2019-05-13 09:01:08 · 279 阅读 · 0 评论 -
22、括号生成
给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出n=3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()"] 方法一:动态规划 思路: 【1】对于已有字符串str添加'('还是‘)’ 【2】若左括号数小于n可以添加左括号'(' 【3】若左括号数大于右括号数添加右...原创 2019-05-04 11:01:24 · 191 阅读 · 0 评论 -
19、删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。(说明给定的n保证是有效的。) 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 方法一:使用栈来存储 思路:时间复杂度O(n),空间复杂度O(n) 【1】压栈处理,将所有结点存入vector容器。 【...原创 2019-05-04 10:57:49 · 123 阅读 · 0 评论 -
3、无重复字符的最长子串
题目要求:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 方法一:暴力法 时间复杂度O(n^3) 空间复杂度O(min(m, n)) 超出时间限制 思路: 【1】以长度length为for循环进行截取字符串 for(int i=length;i>0;i...原创 2019-05-02 14:35:19 · 106 阅读 · 0 评论 -
4、寻找两个有序数组的中位数
题目要求:给定两个大小为 m 和 n 的有序数组nums1和nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。 示例:nums1 = [1, 2];nums2 = [3, 4];则中位数是 (2 + 3)/2 = 2.5 方法一:合并法,虽然通过,但是时间复杂度不符合要求 思路:参考合并两个链表 时间复杂度O(max(m,n)),空...原创 2019-05-02 16:58:11 · 253 阅读 · 0 评论 -
5、最长回文子串
题目描述:给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 方法一:暴力法(超出时间限制) 思路:时间复杂度O(n^3),空间负责度O(n),用于存储s的最大长度 【1】以长度length进行for循环 for(length=str.legnth();length...转载 2019-05-04 10:18:54 · 205 阅读 · 0 评论 -
6、Z字形变换
题目描述:将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列(实际是N字形排列) 比如输入字符串为"LEETCODEISHIRING"行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 输出:"LCIRETOESIIG...原创 2019-05-04 10:25:16 · 171 阅读 · 0 评论 -
11、盛最多水的容器
给定n个非负整数a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画n条垂直线,垂直线i的两个端点分别为(i,ai) 和 (i, 0)。 找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。 输入: [1,8,6,2,5,4,8,3,7] 输出: 49 方法一:暴力法(超出时间限制) 思路:时间复杂度O(n^2),空间复杂...原创 2019-05-04 10:30:14 · 130 阅读 · 0 评论 -
15、三数之和
给定一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c ,使得a + b + c =0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ] 方法一:双指针法 思路:时间...原创 2019-05-04 10:37:06 · 119 阅读 · 0 评论 -
16、最接近的三数之和
给定一个包括n个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2). 如果你理解了算法15的思想,相信这道题也...原创 2019-05-04 10:41:11 · 124 阅读 · 0 评论 -
17、电话号码的字母组合
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 图中显示:2:abc; 3:def; 4:ghi; 5:jkl; 6:mno; 7:pqrs; 8:tuv; 9:wxyz; 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "...原创 2019-05-04 10:47:48 · 601 阅读 · 0 评论 -
18、四数之和
给定一个包含n个整数的数组nums和一个目标值target,判断nums中是否存在四个元素a,b,c和d,使得a+b+c+d的值与target相等?找出所有满足条件且不重复的四元组。 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。 满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1,...原创 2019-05-04 10:52:19 · 170 阅读 · 0 评论 -
37、解数独
编写一个程序,通过已填充的空格来解决数独问题。 一个数独的解法需遵循如下规则: 数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。 空白格用'.'表示。 一个数独。 答案被标成红色。 方法一:递归 思路: 【1】先初始化将行,列,九宫格的数存入set中。 【2】遍历数组,找到一...原创 2019-05-13 09:05:45 · 227 阅读 · 0 评论