
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 · 93 阅读 · 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 · 125 阅读 · 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 · 151 阅读 · 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 · 151 阅读 · 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 · 281 阅读 · 0 评论 -
31、下一个排列
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3→1,3,23,2,1→1,2,31,1,5→1,5,1这道题写了很久没有思路,所以看了官方给出的题解...转载 2019-05-05 09:03:48 · 119 阅读 · 0 评论 -
32、最长有效括号
给定一个只包含'('和')'的字符串,找出最长的包含有效括号的子串的长度。输入: "(()"输出: 2解释: 最长有效括号子串为 "()"输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"方法一: 递归法思路:使用递归超出内存限制【1】对于字符串str从左往右数,记录左括号'('和右括号')'的数量。【2】若出现右括号数>左括...原创 2019-05-05 09:10:13 · 272 阅读 · 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 · 179 阅读 · 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 · 249 阅读 · 0 评论 -
36、有效的数独
判断一个9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次数独部分空格内已填入了数字,空白格用'.'表示。方法一:一遍遍历思路:时间复杂度O(1),空间复杂度O(1)【1】对9*9的数组进行一遍遍历,对行遍...原创 2019-05-13 09:01:08 · 272 阅读 · 0 评论 -
22、括号生成
给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n=3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]方法一:动态规划思路:【1】对于已有字符串str添加'('还是‘)’【2】若左括号数小于n可以添加左括号'('【3】若左括号数大于右括号数添加右...原创 2019-05-04 11:01:24 · 148 阅读 · 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 · 119 阅读 · 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 · 96 阅读 · 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 · 246 阅读 · 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 · 194 阅读 · 0 评论 -
6、Z字形变换
题目描述:将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列(实际是N字形排列)比如输入字符串为"LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N输出:"LCIRETOESIIG...原创 2019-05-04 10:25:16 · 161 阅读 · 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 · 122 阅读 · 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 · 113 阅读 · 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 · 117 阅读 · 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 · 589 阅读 · 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 · 165 阅读 · 0 评论 -
37、解数独
编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。空白格用'.'表示。一个数独。答案被标成红色。方法一:递归思路:【1】先初始化将行,列,九宫格的数存入set中。【2】遍历数组,找到一...原创 2019-05-13 09:05:45 · 218 阅读 · 0 评论