随笔分类 -  LeetCode

摘要:LeetCode32. 最长有效括号 题目描述 /** * * 给你一个只包含 '(' 和 ')' 的字符串, * <p> * 找出最长有效(格式正确且连续)括号子串的长度。 * */ 思路分析 基于栈的先进后出特性,可以巧妙的解决左右括号匹配的问题 即左括号先入栈,然后拿右括号来匹配,如果匹配成功 阅读全文
posted @ 2021-05-22 10:55 mx_info 阅读(87) 评论(0) 推荐(0)
摘要:LeetCode31. 下一个排列 题目描述 /** * 实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 * <p> * 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 * <p> * 必须 原地 修改,只允许使用额外常数空间 * 阅读全文
posted @ 2021-05-21 10:40 mx_info 阅读(45) 评论(0) 推荐(0)
摘要:LeetCode30. 串联所有单词的子串 题目描述 /** * * 给定一个字符串 s 和一些 长度相同 的单词 words 。 * 找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。 * <p> * 注意子串要与 words 中的单词完全匹配,中间不能有其他字符 , * 但 阅读全文
posted @ 2021-05-20 16:50 mx_info 阅读(41) 评论(0) 推荐(0)
摘要:LeetCode25. K 个一组翻转链表 题目描述 /** * * 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 * * k 是一个正整数,它的值小于或等于链表的长度。 * * 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 * */ 思路分析 先获取链表 阅读全文
posted @ 2021-05-19 10:20 mx_info 阅读(54) 评论(0) 推荐(0)
摘要:LeetCode23. 合并K个升序链表 题目描述 /** * * 给你一个链表数组,每个链表都已经按升序排列。 * <p> * 请你将所有链表合并到一个升序链表中,返回合并后的链表。 * */ 思路分析 先实现将两个链表合并,然后循环合并链表数组中所有链表 合并两个链表,可以将一个链表中的所有元素 阅读全文
posted @ 2021-05-18 11:09 mx_info 阅读(87) 评论(0) 推荐(0)
摘要:LeetCode24. 两两交换链表中的节点 题目描述 /** * * 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 * <p> * 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 * */ 思路分析 使用迭代的思想,依次将两两节点进行交换 此题目中head节点指向一个 阅读全文
posted @ 2021-05-16 10:00 mx_info 阅读(55) 评论(0) 推荐(0)
摘要:LeetCode18:四数之和 题目描述 /** * 给定一个包含 n 个整数的数组 nums 和一个目标值 target, * 判断 nums 中是否存在四个元素 a,b,c 和 d , * 使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 * <p 阅读全文
posted @ 2021-05-15 09:35 mx_info 阅读(52) 评论(0) 推荐(0)
摘要:LeetCode17. 电话号码的字母组合 题目描述 /** * 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 * 答案可以按 任意顺序 返回。 * <p> * 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 */ 思路分析 暴力解法如下 优化解法 递归 阅读全文
posted @ 2021-05-14 10:15 mx_info 阅读(49) 评论(0) 推荐(0)
摘要:LeetCode16. 最接近的三数之和 题目描述 /** * * 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。 * 找出 nums 中的三个整数,使得它们的和与 target 最接近。 * 返回这三个数的和。假定每组输入只存在唯一答案。 * */ 思路分析 使用排序 + 阅读全文
posted @ 2021-05-13 10:24 mx_info 阅读(86) 评论(0) 推荐(0)
摘要:LeetCode19. 删除链表的倒数第 N 个结点 题目描述 /** * * 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 * <p> * 进阶:你能尝试使用一趟扫描实现吗? * */ 思路分析 要删除链表的倒数第n个节点,可以考虑先计算链表的总长度 然后用链表的 总长度 - 阅读全文
posted @ 2021-05-12 08:45 mx_info 阅读(64) 评论(0) 推荐(0)
摘要:LeetCode15. 三数之和 题目描述 /** * * 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c , * 使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 * <p> * 注意:答案中不可以包含重复的三元组。 * */ 阅读全文
posted @ 2021-05-11 10:24 mx_info 阅读(59) 评论(0) 推荐(0)
摘要:LeetCode21. 合并两个有序链表 题目描述 /** * * 将两个升序链表合并为一个新的 升序 链表并返回。 * 新链表是通过拼接给定的两个链表的所有节点组成的。 * * */ 思路分析 合并两条有序链表可以考虑使用递归的思路 递归,即函数自己调用自己,不过在每次调用过程中,参数都要发生变化 阅读全文
posted @ 2021-05-10 09:46 mx_info 阅读(37) 评论(0) 推荐(0)
摘要:LeetCode12. 整数转罗马数字 题目描述 /** * 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 * <p> * 字符 数值 * I 1 * V 5 * X 10 * L 50 * C 100 * D 500 * M 1000 * 例如, 罗马数字 2 写做 II , 阅读全文
posted @ 2021-05-10 09:04 mx_info 阅读(72) 评论(0) 推荐(0)
摘要:LeetCode13. 罗马数字转整数 题目描述 /** * 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 * * 字符 数值 * I 1 * V 5 * X 10 * L 50 * C 100 * D 500 * M 1000 * 例如, 罗马数字 2 写做 II ,即为两个 阅读全文
posted @ 2021-05-09 09:22 mx_info 阅读(77) 评论(0) 推荐(0)
摘要:LeetCode14. 最长公共前缀 题目描述 /** * * 编写一个函数来查找字符串数组中的最长公共前缀。 * <p> * 如果不存在公共前缀,返回空字符串 ""。 * */ 思路分析 此题目要求返回字符串数组中所有字符串的公共前缀子串 可以考虑使用化繁为简的思路,先编写一个方法可以得到两个字符 阅读全文
posted @ 2021-05-09 08:38 mx_info 阅读(75) 评论(0) 推荐(0)
摘要:LeetCode11. 盛最多水的容器 题目描述 /** * 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。 * 在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。 * 找出其中的两条线,使得它们与 x 轴共同构 阅读全文
posted @ 2021-05-08 09:14 mx_info 阅读(56) 评论(0) 推荐(0)
摘要:LeetCode6.Z字形变换 题目描述 /** * 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 * 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下: * * P A H N * A P L S I I G * Y 阅读全文
posted @ 2021-05-07 09:40 mx_info 阅读(144) 评论(0) 推荐(0)
摘要:LeetCode5.最长回文子串 题目描述 /** * 给你一个字符串 s,找到 s 中最长的回文子串。 */ 思路分析 思路1.暴力遍历思路 第一次遍历字符串中所有字符 第二次遍历找到该字符对应所有子串 判断这些子串是否为回文数 如果是,记录最长子串并返回 暴力遍历时间复杂度太高,一般不采用 思路 阅读全文
posted @ 2021-05-06 09:35 mx_info 阅读(60) 评论(0) 推荐(0)
摘要:LeetCode7. 整数反转 题目描述 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。 思路分析 使用整数除法和取模的思路 整数每次模10,则得到这个整数的最低位,每次 阅读全文
posted @ 2021-05-05 10:00 mx_info 阅读(58) 评论(0) 推荐(0)
摘要:LeetCode4.寻找两个正序数组的中位数 题目描述 /** * 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。 * 请你找出并返回这两个正序数组的 中位数 。 */ 思路分析(简单做法--> 归并 + 排序) 将两个数组中的元素分别添加到ArrayList集 阅读全文
posted @ 2021-05-05 08:55 mx_info 阅读(69) 评论(0) 推荐(0)