首页 > TAG信息列表 > LeftMax
10.求一个数组最大值(递归)
int GetMax(int arr[], int left, int right) { if (left == right) return arr[right]; int mid = left + ((left-right)>>1); int leftMax = GetMax(arr, left, mid); int rightMax = GetMax(arr, mid+1, right); return leftMax > rightgo-接雨水
func CountMaxRain(t *testing.T){ var height =[]int {0,1,0,2,1,0,1,3,2,1,2,1} leftMax:=make([]int,0,len(height)) rightMax:=make([]int,len(height)) for i:=range height{ if i==0{ leftMax=append(leftMax,height[i])LeetCode No42. 接雨水
题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示LeetCode 热题 HOT 100 第20天:“接雨水”
继续刷LeetCode 热题 HOT 100 的题目,并且在博客更新我的solutions。在csdn博客中我会尽量用文字解释清楚,相关Java代码大家可以前往我的个人博客jinhuaiyu.com中查看。 今天的题目比较难,主要是数学思维要清晰我感觉自己就是个数学渣渣……连计算面积都不会。今天又是被迫看官678. 有效的括号字符串
给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则: 任何左括号 ( 必须有相应的右括号 )。 任何右括号 ) 必须有相应的左括号 ( 。 左括号 ( 必须在对应的右括号之前 )。 * 可以被视为单个右括号 ) ,或单个左括号 (LeetCode Notes_#42_接雨水
LeetCode Notes_#42_接雨水LeetCode Contents 题目解法 题目 解法 记住一个公式, 当前位置雨水高度 = min(当前位置左边最高高度,当前位置右边最高高度) - 当前位置高度 那么其实问题就归结为,先计算出每个位置左右两边的最高高度。然后根据这个数据,就可以求出雨水面积。 cl【每日一题】【动态规划】【双指针】2021年11月30日-42. 接雨水
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 四种解法:常规方法、动态规划、双指针一次优化 还有其他:单调栈方法 //传统做法 class Solution { public int trap(int[] height) { int res = 0; int sizeLC42——接雨水(单调栈、动态规划)
接雨水问题 原题目: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 1、 简单解法 首先,直观上来看能接雨水的柱子的两边肯定有比它更高的柱子。那么如何确定一根柱子可以接多少雨水呢?如前一句分析,与它左边最高的柱子和右边最高master公式
master: T(n) = a * T(N/b) + O(N^d); 当: log b A < d 时,程序的时间复杂度为:O(N^d); log b A > d 时,程序的时间复杂度为:O(N^log b A); log b A = d 时,程序的时间复杂度为:O(N^d * log N); 符合子问题规模是等规模的行为,均可使用master公式求解时间复杂度。 例: /* * 递归调用求算法中的预处理操作
打表 题目 打两个表,分别记录左侧的最大值以及右侧的最小值。 #include<bits/stdc++.h> #define inf 0x3f3f3f3f using namespace std; const int maxn=100010; int a[maxn],n; int leftmax[maxn]; int rightmin[maxn]; vector<int> re; int main() { memset(leftmax,-ileetcode 42. 接雨水
leetcode 42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 class Solution { public int trap(int[] height) { if(height == null || height.length == 0){ return 0 ; }JZ63 数据流中的中位数
数据流中的中位数 题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前Leetcode-面试题17.21 直方图的水量
动态规划——用空间换时间 明确思路:对于下标 i,水能到达的最大高度等于下标 i 两边的最大高度的最小值,下标 i 处能接的水的量等于下标 i 处的水能到达的最大高度减去 height[i] 时间复杂度:O(n) 空间复杂度:O(n) class Solution { public: int trap(vector<int>& height)