【Leetcode Daily】3531统计被覆盖的建筑
发表于|更新于|力扣日常 | LeetcodeDaily
|总字数:354|阅读时长:1分钟|浏览量:
题目浅析
想查看原题可以点击题目链接。
简单地说,就是给一个二维数组代表点集,求其中上下左右都有点的点的个数。
思路分享
又是能和灵神思考相近的一次,开心喵。
首先考虑暴力解法,那就是对于每一个点,再遍历数组,查看是否该点的横纵坐标都有更大以及更小的值。复杂度已经达到了 O(n^2)。
想要降低复杂度,就需要改进判断这个点的上下左右是否有值,那么如果能知道对应的 x,y 坐标上的极值,不就可以了嘛。
所以,在遍历所有点前,可以先预处理,记录每个横纵坐标的极值,这样就把二次遍历的过程优化了,时间复杂度下降到了 O(n)。
代码解答(强烈建议自行解答后再看)
- 参考题解
1 | class Solution: |
文章作者: 陆爻齐-LuYaoQi
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!
相关推荐

2025-11-30
【Leetcode Daily】1590使数组和能被P整除
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个数组和数字 p,现在可以移除数组内的最短长度的子数组,使得数组和能被 p 整除。 思路分享 本质上就是找到子数组和能与总数组和同余时,长度最小的情况。对于找子数组的前缀和区间两侧:(right - left)%p = num, (right-num)%p = left%p。 那么遍历前缀和,通过哈希表就能方便得记录前面子数组的余数情况,如果有匹配的左侧子数组,就记录当前长度。 https://leetcode.cn/problems/make-sum-divisible-by-p/solutions/2158435/tao-lu-qian-zhui-he-ha-xi-biao-pythonjav-rzl0/?envType=daily-question&envId=2025-11-30 代码解答(强烈建议自行解答后再看) 参考题解 1234567891011121314class Solution: def minSubarray(self, nums:...

2026-01-02
【Leetcode Daily】169多数元素
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个数组,其中有一个数字的个数,超过整体的一半,求出这个数字是什么 思路分享 哈希表查重的方法不多赘述,这里介绍灵神所教的一种方法,多数投票。 意思就是,设置一个初始值,和初始计数 1,如果遇到的值与初始值相等,则计数加一,否则计数减一,一旦计数归零,下个数字就当作初始值,计数设为 1。由于答案的数字一定比其他数字都多,所以这个算法下来的最终值一定为答案。 https://leetcode.cn/problems/majority-element/solutions/3744717/on-mo-er-tou-piao-fa-yan-jin-zheng-ming-ww1zv/ 但必须重申,这个算法的实现需要答案的个数严格大于整体个数的一半,不能只是一半。 代码解答(强烈建议自行解答后再看) 参考题解 12345678910class Solution: def majorityElement(self, nums: List[int]) -> int: ans, hp = 0,...

2025-12-02
【Leetcode Daily】3623统计梯形的数目I
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一组点,用这些点组成至少有一对水平边的水平梯形,求组合数 思路分享 由于有一组边必须与 x 轴平行,所以可以记录每一行的点数,然后每一行的点两两组合就有 i*(i-1)//2 种,接着每两行的组合数相乘就是这两行的水平梯形的个数。由于最坏情况下,两行之间的水平梯形的个数也不超过 9*10^18, 不超过 64 位数字的最大值,所以可以不用在循环里面取模。 https://leetcode.cn/problems/count-number-of-trapezoids-i/solutions/3728518/mei-ju-you-wei-hu-zuo-pythonjavacgo-by-e-lwnv/?envType=daily-question&envId=2025-12-02 代码解答(强烈建议自行解答后再看) 参考题解 123456789101112class Solution: def countTrapezoids(self, points:...

2025-12-30
【Leetcode Daily】840矩阵中的幻方
题目浅析 想查看原题可以点击题目链接。 简单地说,就是规定3x3的幻方中的数字 1-9,且行列对角线之和都相等,求给定矩阵中有多少个上述的 3x3 幻方。 思路分享 根据灵神的一系列推导分析,3x3 幻方满足,中心必定为 5,前两行和前两列之和为 15,所有数字为 1-9.其中要快速判断矩阵中是否有且只有 1-9,可以通过位运算,2^10-2 可以代表 1-9 都在(2 的 x 次方代表 x 在) https://leetcode.cn/problems/magic-squares-in-grid/solutions/3867033/wu-xu-ji-suan-di-san-xing-lie-de-he-yi-j-djue/?envType=daily-question&envId=2025-12-30 代码解答(强烈建议自行解答后再看) 参考题解 1234567891011121314151617181920212223242526class Solution: def numMagicSquaresInside(self, grid:...

2025-08-13
【Leetcode Daily】1003检查替换后的词是否有效
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个字符串,该字符串是从一个空字符串开始,不断插入“abc”形成的,这个插入是从字符串的任意处都可以行动。 思路分享 这个题目和实际的题意完全不是一个意思,坏。不过这个不重要。 发现做栈,只要把握一点,就是何时弹栈。例如本题,只要意识到,弹栈的时候,正在遍历的字母是 c,栈顶有 a 和 b,就轻松地写出了条件。 这个条件应该不是最快的,因为只要中间的 abc 有一处无法正确匹配,就可以算是检测不过关,所以更快的思路应该是按照正在遍历的 abc 三种情况,分别检测栈是否符合“正常”。 https://leetcode.cn/problems/check-if-word-is-valid-after-substitutions/solutions/2253773/zhan-jian-ji-xie-fa-pythonjavacgo-by-end-i9o7/ 本题不断插入 abc,并要求检测是否都是...

2025-05-08
【Leetcode Daily】1004最大连续1的个数III
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个由 0 和 1 组成的整数数组,现在最多可以把其中 k 个 0 反转成 1。求反转后最长连续 1 的个数。 思路分享 纯粹的不定长滑动窗口(【Leetcode Daily】3090每个字符最多出现两次的最长字符串),无需多盐。 代码解答(强烈建议自行解答后再看) 陆爻齐的解法 1234567891011121314151617class Solution {public: int longestOnes(vector<int>& nums, int k) { int zero_count = 0; int left = 0; int n = nums.size(); int ans = 0; for (int i = 0; i < n;i++) { zero_count += 1-nums[i]; while(zero_count...
公告
希望你我都能得偿所愿
PS:相对流水账的文章只能在归档找得到
系列文章
