Leetcode
xaunqingyi
这个作者很懒,什么都没留下…
展开
-
leetcode 2. Add Two Numbers
题意:将两个链表相加,并且逆向进位,且可以进多1位数字1(增加一个节点) 输入:(2 - > 4 - > 3)+(5 - > 6 - > 4) 输出:7 - > 0 - > 8 分析: 时间复杂度O(n),空间复杂度O(n),n为最长的长度。 class Solution { public: ListNode* addTwoNumbers(ListNode* l1, Lis原创 2017-10-10 18:18:17 · 121 阅读 · 0 评论 -
leetcode 3. Longest Substring Without Repeating Characters
题意:求最长连续无重复的子串 分析:使用滑动窗口算法,left为左边界,i为右边界,(left,i]。 class Solution { public: int lengthOfLongestSubstring(string s) { vector a(256,-1); int res=0; int left=-1原创 2017-10-10 19:04:40 · 161 阅读 · 0 评论 -
leetcode 1. Two Sum
题意:给定一个数组,返回两个数的下标,这两个数的和是给定的目标值 分析: 简单方法:在遍历数组的时候,总是在每个元素之后寻找,就是在[i+1,n)的范围内寻找target-nums[i]的值,时间复杂度为O(n^2),空间复杂度为O(1)。 进阶方法:利用哈希map查找target-nums[i],如果存在则返回下标,不存在就压入nums[i],时间复杂度为O(n),空间复杂度为O(原创 2017-10-10 17:16:39 · 203 阅读 · 0 评论 -
leetcode 4. Median of Two Sorted Arrays
题意:求两个有序数组结合之后的中位数 分析: 简单方法:偷懒使用STL,使用sort进行了全部排序,有点浪费 进阶方法:首先确定要求的中位数是正中间的还是求两个中间数的平均数。可以将两个数组大小加起来除2判定。因为要求的是中位数,所以只需要排整个数组的一半的数字就可以了,比较两个数组的第一个数字 ,像接链表似的,每次都将两个链表头中小的那个插入新链表,然后删除它,再接着比较链表的头。原创 2017-10-10 19:30:35 · 179 阅读 · 0 评论 -
leetcode 5. Longest Palindromic Substring
题意:寻找最长的回文字符串 分析:使用动态规划,维护一张表table[i][j],i表示左边界,j表示右边界,table的值表示i倒j范围内的值是否是回文字符串,时间复杂度O(n^2),空间O(n^2),动态规划方程如下: dp[i][j] 表示子串s[i…j]是否是回文初始化:dp[i][i] = true (0 dp[i][j] = (s[i] == s[j] && dp[原创 2017-10-11 20:33:30 · 186 阅读 · 0 评论 -
leetcode 6. ZigZag Conversion
题意:给一个字符串,再给一个行数,Z型排列这一个字符串 分析:找规律 public class Solution { public String convert(String s, int nRows) { int len = s.length(); if (len == 0 || nRows < 2) return s;原创 2017-10-11 20:47:48 · 150 阅读 · 0 评论