【Leetcode Daily】3228将1移动到末尾的最大操作次数
发表于|更新于|力扣日常 | LeetcodeDaily
|总字数:370|阅读时长:1分钟|浏览量:
题目浅析
想查看原题可以点击题目链接。
简单地说,就是给一个由 0 和 1 组成的一维数组,现在可以对数组中的任意 1 做右移到末尾或者下个 1 的左边,求可以这么操作的最大操作数。
思路分享
对于陌生题居然能想出和写出与灵神相同的答案,荣幸之至啊。下面说下思路。
一般来说,从最少操作的角度,应当从右边向右归类,因为如果有 1 挡在中间,那么其左边的 1 就不能一步到位(至少还需要更多的移动)。现在反过来需要最多操作,那么就从最左边的 1 向右就行了。
操作策略定下来了,但是怎么比较快速的确定操作了多少个 1 呢?只要遍历的时候记录已经遍历的 1,一旦遇到下一个 0,可以让已经有的 1 各操作一次(从右向左),这样就能 O(1) 计算操作数。
代码解答(强烈建议自行解答后再看)
- 参考题解
1 | class Solution: |
文章作者: 陆爻齐-LuYaoQi
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!
相关推荐

2025-11-03
【Leetcode Daily】1578使得绳子变成彩色的最短时间
题目浅析 想查看原题可以点击题目链接。 简单地说,就是绳子上有很多气球(字符串表示),每个气球都有拆下来的代价(整型数组),求把绳子上的气球拆得没有连续颜色需要的最小代价。 https://leetcode.cn/problems/minimum-time-to-make-rope-colorful/solutions/3808739/tan-xin-mei-duan-bao-liu-zui-da-de-pytho-4xln/?envType=daily-question&envId=2025-11-03 思路分享 贪心策略,先计算代价之和,然后去除每一段颜色中,代价最大的气球即可。 代码解答(强烈建议自行解答后再看) 参考题解 123456789101112class Solution: def minCost(self, colors: str, neededTime: List[int]) -> int: ans = cur_max = 0 n = len(colors) for i, x in...

2025-12-25
【Leetcode Daily】3075幸福值最大化的选择方案
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个一维整数数组,从中取 k 个数,每取一个数,就要对数组中所有大于零的数减一,求最终可得最大和。 思路分享 由于 0 不会再减,可见直接从大值开始取就行。具体解法难得与灵神一致,就是先排序数组,然后用下标记录要减的值,一旦这个值大于数组的值就可以中断循环,因为后面都是 0. https://leetcode.cn/problems/maximize-happiness-of-selected-children/solutions/2678114/pai-xu-tan-xin-pythonjavacgo-by-endlessc-onma/?envType=daily-question&envId=2025-12-25 代码解答(强烈建议自行解答后再看) 参考题解 12345678910class Solution: def maximumHappinessSum(self, happiness: List[int], k: int) -> int: ...

2026-01-15
【Leetcode Daily】2943最大化网络图中正方形空洞的面积
题目浅析 想查看原题可以点击题目链接。 简单地说,给一个矩形,这个矩形已经被分割成了多个 1x1 正方形,又给了两个边集,现在只能从边集删边,求删边后矩形中能有的面积最大的正方形。 思路分享 正如灵神所说,这题最难的是读题。陆爻齐一开始理解成了只有边集的边才会成立,后面发现前面又说更开始都是 1x1 正方形矛盾而疑惑。但其实,边集和矩形中有多少边没关系,边集只限制了能删的边。所以求出两个方向中,最多连续可删的边的较小值平方就是本题答案。 https://leetcode.cn/problems/maximize-area-of-square-hole-in-grid/solutions/2542812/heng-shu-fen-bie-tong-ji-fen-zu-xun-huan-nboj/?envType=daily-question&envId=2026-01-15 代码解答(强烈建议自行解答后再看) 参考题解 12345678910111213141516class Solution: # 返回 a 排序后的最长连续递增子数组的长度 ...

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...

2025-08-19
【Leetcode Daily】1021删除最外层的括号
题目浅析 想查看原题可以点击题目链接。 简单地说,就是按照题目规定的“原语”来分解有效的括号字符串,要求去掉最外面的一层括号。 思路分享 通过栈记录可以判定当前的括号是否为最外层。具体方法是记录符号时,如果栈内有括号,说明不是最外层,就记录到结果中,否则就只压栈。 https://leetcode.cn/problems/remove-outermost-parentheses/solutions/1520365/shan-chu-zui-wai-ceng-de-gua-hao-by-leet-sux0/ 代码解答(强烈建议自行解答后再看) 参考题解 123456789101112131415class Solution: def removeOuterParentheses(self, s: str) -> str: res, stack = "", [] for c in s: print(res) print(stack) ...
公告
希望你我都能得偿所愿
PS:相对流水账的文章只能在归档找得到
系列文章
