计数if|

lc2593

1.mask ll也会溢出 转vec bool

2.sort pii(nums,idx) 后标记自身 &左右

一次遍历即可

class Solution {

typedef long long ll;

public:

long long findScore(vector<int>& nums) {

ll ret = 0;

int n = nums.size();

if (n == 1) return nums[0];

vector<bool> mask(n, false);

// 1. 元素按"值+下标"排序

vector<pair<int, int>> arr;

for (int i = 0; i < n; ++i)

arr.emplace_back(nums[i], i);

sort(arr.begin(), arr.end());

// 2. 按排序处理,用mask标记

for (auto& [val, idx] : arr)

{

if (!mask[idx]) { // 当前元素未标记

ret += val;

mask[idx] = true; // 标记自身

if (idx > 0) mask[idx - 1] = true; // 标记左邻

if (idx < n - 1) mask[idx + 1] = true; // 标记右邻

}

}

return ret;

}

};

lc2155

presum预处理

class Solution {

public:

vector<int> maxScoreIndices(vector<int>& nums)

{

int n = nums.size();

vector<int> pre(n + 1);

for (int i = 1; i <= n; ++i)

pre[i] = pre[i-1] + nums[i-1];

int max_s = 0;

vector<int> res;

for (int i = 0; i <= n; ++i) {

int l0 = i - pre[i];

++int r1 = pre[n] - pre[i];++

int s = l0 + r1;

if (s > max_s) {

max_s = s;

res = {i};

}

else if (s == max_s)

res.push_back(i);

}

return res;

}

};

lc2216

模拟栈

维护一个有效序列,遇到"偶数长度序列末尾元素和当前元素相同"的情况就替换末尾元素,最后保证序列是偶数长度

++原数组长度减去有效长度得到最少删除次数++

class Solution {

public:

int minDeletion(vector<int>& nums) {

vector<int> ans;

for (int num : nums) {

if (ans.size() > 0 && ++num == ans.back() && ans.size() % 2 == 1)++

continue;//ignore

else

ans.push_back(num);

}

int len = ans.size() % 2 == 0 ? ans.size() : ans.size() - 1;

++return nums.size() - len;++

}

};

lc2038

统计连续相同颜色的长度

class Solution {

public:

bool winnerOfGame(string colors)

{

int n = colors.size();

if (n < 3) return false;

int alice = 0, bob = 0;

int count = 1;

// 记录当前连续相同字符的长度

for (int i = 1; i < n; ++i) {

if (colors[i] == colors[i-1])

count++;//相等_计数

else

{ // 不等_统计上一段连续字符的可op

if (colors[i-1] == 'A')

alice += max(0, count - 2);

else

bob += max(0, count - 2);

++count = 1;//重置++

}

}

++// 处理最后一段连续字符
if (colors.back() == 'A')
++

alice += max(0, count - 2);

else

bob += max(0, count - 2);

return alice > bob;

}

};

相关推荐
夜思红尘12 小时前
算法--双指针
python·算法·剪枝
散峰而望12 小时前
【算法竞赛】C++函数详解:从定义、调用到高级用法
c语言·开发语言·数据结构·c++·算法·github
CoderCodingNo12 小时前
【GESP】C++五级真题(贪心思想考点) luogu-B4071 [GESP202412 五级] 武器强化
开发语言·c++·算法
我有一些感想……12 小时前
An abstract way to solve Luogu P1001
c++·算法·ai·洛谷·mlp
前端小L12 小时前
双指针专题(三):去重的艺术——「三数之和」
javascript·算法·双指针与滑动窗口
智者知已应修善业14 小时前
【求等差数列个数/无序获取最大最小次大次小】2024-3-8
c语言·c++·经验分享·笔记·算法
LYFlied14 小时前
【每日算法】LeetCode 416. 分割等和子集(动态规划)
数据结构·算法·leetcode·职场和发展·动态规划
多米Domi01114 小时前
0x3f 第19天 javase黑马81-87 ,三更1-23 hot100子串
python·算法·leetcode·散列表
历程里程碑14 小时前
滑动窗口最大值:单调队列高效解法
数据结构·算法·leetcode
課代表15 小时前
从初等数学到高等数学
算法·微积分·函数·极限·导数·积分·方程