再次刷题
libliuis
退役ACMer,ROS新手
展开
-
LeetCode 84. 柱状图中最大的矩形 85. 最大矩形 221. 最大正方形
LeetCode 84. 柱状图中最大的矩形 这道题的思路很明确,首先遍历整个数组,找到数值最小元素的位置和值,那么包含这个位置的矩形的最大高度只能是这个最小值,矩形的宽度最大为整个数组的长度,能够存在的更大的矩形只能是不包含这个位置的其他矩形,即在最小位置的左侧和右侧分别进行以上操作,直到数组边界位置,用递归来解决,不断松弛最大矩形的面积。 参考快速排序的时间复杂度,算法时间复杂度为O...原创 2018-07-25 13:19:41 · 484 阅读 · 0 评论 -
LeetCode 1.两数之和
LeetCode 1.两数之和水题,暴力练手class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { vector<int>ans; for(int i=0;i<nums.size();i++) {...原创 2018-07-14 22:32:46 · 128 阅读 · 0 评论 -
LeetCode 2. 两数相加
LeetCode 2. 两数相加水题,dfs/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { pu...原创 2018-07-14 22:37:37 · 79 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长子串
LeetCode 3. 无重复字符的最长子串 ASCII共有256个字符,所以设置256个标志位,记录这个字符上次出现的位置,初始为-1即未出现,用start记录当前子串的开始位置,如果当前字符上一次记录的位置小于start,那么更新当前字符记录的位置为当前位置;如果大于start,那么说明start开始的这个子串中重复包含了当前字符,松弛最大长度,start等于当前位置,开始寻找新的非重复...原创 2018-07-20 15:13:46 · 131 阅读 · 0 评论 -
LeetCode 32. 最长有效括号
LeetCode 32. 最长有效括号 先正向获得所有的多余右括号位置,再反向获得所有的多余左括号位置,再插入-1(表示起始位置)和s.length()(表示结束位置),然后将获得的矛盾位置数组排序,相邻位置之间的差值-1的最大值即为有效括号的最大长度。时间复杂度为O(nlogn). class Solution { public: int longestValidParenth...原创 2018-07-20 15:20:18 · 190 阅读 · 0 评论 -
LeetCode 164. 最大间距
LeetCode 164. 最大间距 因为追求线性复杂度,所以不可能用经典排序的算法,因此需要更巧妙地利用已知条件。 类似与抽屉原理。我们用O(n)预处理出数组的最大值maxn和最小值minn,那么最大的间距肯定在maxn-minn之间,有因为有n个数,所以每个数之间的平均距离为size=(maxn-minn)/n+1, 这是如果数组有序且元素都是等间距的时候的最大间距。因此我们一共要把数组...原创 2018-08-13 16:27:37 · 1787 阅读 · 0 评论 -
LeetCode 650 只有两个键的键盘
LeetCode 164.只有两个键的键盘 对于从1到n/2的可能子分组找最小值,递归思想。从一个子分组到最后的字符串,需要复制一次加粘贴n/i-1次,即一共n/i次。 class Solution { public: int minSteps(int n) { if(n==1)return 0; if(n==2)return 2; ...原创 2018-12-06 12:24:36 · 186 阅读 · 0 评论