LeetCode
zmingyang
这个作者很懒,什么都没留下…
展开
-
正则表达式匹配--LeetCode
题目: 请实现一个函数用来匹配包括’.’和’’的正则表达式。模式中的字符’.’表示任意一个字符,而’’表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”abaca”匹配,但是与”aa.a”和”aba”均不匹配 思路: '.‘的匹配比较简单不说了。’'字符的规则是该字符前的字符可以无限次,因此我们采用从后向前的顺序来匹配。 public class Solution { public boolean match(St原创 2020-07-10 15:21:52 · 354 阅读 · 0 评论 -
最长回文子串
题目: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 思路: 本题使用动态规划的思路来做,设字符串为S,我们首先找出S所有的回文子串。设二维布尔数组dp[][],dp[i][j]表示从字符串S位置i到j构成的子串是否为回文子串。其具体条件如下: 1.当s[i]!=s[j],此时不属于回文子串 2.当s[i]==s[j],此时该子串是否是回文子串就需考虑里面的字符,(1)原创 2020-07-19 10:43:44 · 242 阅读 · 0 评论 -
寻找两个正序数组的中位数
题目: 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: nums1 = [1, 3] nums2 = [2] 则中位数是 2.0 思路: 因为两数组都是正序的,利用这一点就可以合并成一个正序数组,最后即可求取中位数。 class Solution { public double findMedianSorted原创 2020-07-19 10:02:37 · 188 阅读 · 0 评论 -
无重复字符的最长子串
题目: 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 例: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 思路: 使用一个滑动窗口来遍历整个字符串,使用一个数组列表arrayList来储存当前遍历到的最长不重复子字符串。 当遍历到第i个字符s时, 1.若之前遍历到的字符中不包含s,则将s加入arrayList 2.若之前遍历到的字符中已包括字符s,则(1)保存当前arrayList的尺寸,并与当前最大尺寸相比,若大于则更新最大尺原创 2020-07-19 09:37:36 · 246 阅读 · 0 评论 -
两数相加--LeetCode
题目: 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 思路: 本题使用栈来解决,先将两数组数字输入栈,此时注意栈大小要相原创 2020-06-27 22:44:35 · 113 阅读 · 0 评论 -
两数之和--LeetCode
题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9。 因为 nums[0] + nums[1] = 2 + 7 = 9。所以返回 [0, 1] 思路: 首先使用先后指针找到目标两个数字,因为要返回原序号并且先后指针的方法需要排序。所以事先对原数组进行复制,之后利用目标元素找原创 2020-06-27 22:38:06 · 142 阅读 · 0 评论