186双周赛-①Q1-枚举②Q2-贪心/状态机DP③前缀和优化DP
577 字
3 分钟
186双周赛-①Q1-枚举②Q2-贪心/状态机DP③前缀和优化DP
186双周赛-①Q1-枚举②Q2-贪心/状态机DP③前缀和优化DP
https://www.wolai.com/bffX1CFhNVx9JdE1PHrb8g
Q2-枚举
题意
给你一个长度为 n 的整数数组 nums 和一个整数 k 。
如果满足以下条件,则下标对 (i, j) 被称为有效 的:
0 <= i < j < nj - i >= k
返回所有有效对中的 nums[i] + nums[j] 的最大 值。
枚举
枚举右,维护左,枚举的过程中维护nums[j-k]的最大值
class Solution: def maxValidPairSum(self, nums: list[int], k: int) -> int: ans = -inf pre = nums[0] for j in range(k,len(nums)): pre = max(pre,nums[j - k]) ans = max(ans,pre + nums[j]) return ansclass Solution {public: int maxValidPairSum(vector<int>& nums, int k) { int ans = 0,mx = 0; for(int j = k;j < nums.size();j++){ mx = max(mx,nums[j-k]); ans = max(ans,mx + nums[j]); } return ans; }};Q3-贪心/状态机DP
题意
给你两个长度同为 n 的二进制字符串 s1 和 s2 。
你可以对 s1以任意顺序执行以下操作任意 次:
- 选择一个满足
s1[i]为'0'的下标i,并将其更改为'1'。 - 选择一个满足
0 <= i < n - 1且s1[i]和s1[i + 1]均为'1'的下标i。将这两个字符都更改为'0'。
返回使 s1 等于 s2 所需的最小 操作次数。如果无法使 s1 等于 s2 ,则返回 -1 。
贪心
class Solution: def minOperations(self, s1: str, t: str) -> int: n = len(s1) if n == 1 and s1[0] == '1' and t == '0': return -1 s = list(s1) ans = 0 for i in range(n): if s[i] == t[i]: continue if s[i] == '0': ans += 1 elif i < n - 1 and s[i+1] == '1': ans += 1 s[i+1] = '0' else: ans += 2 return ansclass Solution {public: int minOperations(string s, string t) { int n = s.size(); if (n == 1 && s == "1" && t == "0") { return -1; } int ans = 0; for (int i = 0; i < n; i++) { if (s[i] == t[i]) { continue; } if (s[i] == '0') { ans++; } else if (i < n - 1 && s[i + 1] == '1') { ans++; s[i + 1] = '0'; } else { ans += 2; } } return ans; }};状态机DP
class Solution: def minOperations(self, s1: str, s2: str) -> int: n = len(s1) s1 = list(s1) s2 = list(s2) if n == 1: if s1 == s2: return 0 return 1 if s1[0] == '0' and s2[0] == '1' else -1 d = [int(s2[i]) - int(s1[i]) for i in range(n)] c2 = [0]*(n - 1) c2[-1] = max(0,-d[-1]) for i in range(n-3,-1,-1): c2[i] = max(0,-d[i+1] - c2[i+1]) c2[0] = max(c2[0],-d[0]) return sum(d) + 3 * sum(c2)Q4-前缀和优化DP
186双周赛-①Q1-枚举②Q2-贪心/状态机DP③前缀和优化DP
http://blog.7a7a68.xyz/posts/186双周赛-q1-枚举q2-贪心-状态机dp-前缀和优化dp/ 相关文章 智能推荐
1
509周赛-①Q1-枚举②Q2-状态机DP/前后缀分解③枚举质因子/线段树/前缀和④Manacher
LeetCode LeetCode509周赛
2
185双周赛-①Q1-构造②Q2-差分+贪心③Q3-DFS④Q4-数位DP
LeetCode LeetCode185双周赛
3
507周赛-①贪心②前缀和+暴力枚举/前缀和+三指针滑动窗口③分层图最短路④二分答案
LeetCode LeetCode507周赛
4
力扣505周赛-①回溯/动态规划+位运算②单调队列优化DP③WQS二分
LeetCode 力扣505周赛-solve2-补Q3Q4
5
力扣506周赛-①维护两个哈希②贪心
LeetCode 力扣506周赛-solve2-补Q3
随机文章 随机推荐