每日一题Day162LC1637两点之间不包含任何点的最宽垂直区域 | 排序

Posted TIkitianya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题Day162LC1637两点之间不包含任何点的最宽垂直区域 | 排序相关的知识,希望对你有一定的参考价值。

两点之间不包含任何点的最宽垂直区域【LC1637】

给你 n 个二维平面上的点 points ,其中 points[i] = [xi, yi] ,请你返回两点之间内部不包含任何点的 最宽垂直区域 的宽度。

垂直区域 的定义是固定宽度,而 y 轴上无限延伸的一块区域(也就是高度为无穷大)。 最宽垂直区域 为宽度最大的一个垂直区域。

请注意,垂直区域 边上 的点 不在 区域内。

真就阅读理解题

  • 思路:排序

    由于所求区域内不能包含其他点,因此可以将points根据x升序排序,那么最终结果为相邻两点宽度差值的最大值

  • 实现

    class Solution 
        public int maxWidthOfVerticalArea(int[][] points) 
            Arrays.sort(points, (p1, p2) -> p1[0] - p2[0]);
            int n = points.length;
            int res = 0;
            for (int i = 1; i < n; i++)
                res = Math.max(res, points[i][0] - points[i - 1][0]);
            
            return res;
    
        
    
    
    • 复杂度

      • 时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)
      • 空间复杂度: O ( l o g n ) O(logn) O(logn)

每日一题27. 过河 (DP + 离散化)

补题链接:Here

算法涉及:DP + 离散化

\\(l\\) 的范围太大,无法作为数组下标,所以先离散化,再DP。两点间的距离d大于t时,一定可以由 \\(d\\ \\%\\ t\\) 跳过来,所以最多只需要t+d%t种距离的状态就可以表示这两个石子之间的任意距离关系。这样就把题目中的 \\(10^9\\) 压缩成了\\(2*t*m\\) 最多不超过 \\(2000\\) ,然后就可以放心大胆地用DP了。不过要注意题目中的“当青蛙跳到或跳过坐标为L的点时,就算青蛙已经跳出了独木桥”,所以DP的终点是一个范围而非确切的一个点,最后还要在这个范围内取最小值。

using ll = long long;
const int N = 1e6 + 10;
const ll inf = 0x3f3f3f3f;
ll dp[N], a[N], vis[N];
void solve() {
	int l, s, t, m;
	cin >> l >> s >> t >> m;
	for (int i = 1; i <= m; ++i)cin >> a[i];
	sort(a + 1, a + 1 + m);
	a[0] = 0, a[m + 1] = l;
	int tmp = 0;
	for (int i = 1; i <= m + 1; ++i) {
		//这里一定要在取模后加t,否则会WA
		if (a[i] - a[i - 1] > t)tmp += (a[i] - a[i - 1]) % t + t;
		else tmp += a[i] - a[i - 1];
		vis[tmp] = 1; //表示此处有石子
	}
	memset(dp, 0x3f, sizeof(dp));
	dp[0] = 0;
	for (int i = 1; i <= tmp + 100; ++i)
		for (int j = s; j <= t; ++j)
			if (i >= j)dp[i] = min(dp[i], dp[i - j] + vis[i]);
	ll ans = inf;
	//终点可能的范围,稍微写大点·
	for (int i = tmp; i <= tmp + 100; ++i)
		ans = min(ans, dp[i]);
	cout << ans;
}

以上是关于每日一题Day162LC1637两点之间不包含任何点的最宽垂直区域 | 排序的主要内容,如果未能解决你的问题,请参考以下文章

算法1637. 两点之间不包含任何点的最宽垂直面积(多语言实现)

每日一题Day154LC1626无矛盾的最佳球队 | 动态规划

每日一题Day160LC1092最短公共超序列 | 动态规划

《LeetCode之每日一题》:162.路径总和 III

(工作预备)lc每日一题

(工作预备)lc每日一题