固定中间

lc2046

lc548

三指针------固定中间 预处理左右边

先算数组前缀和,用三个指针分四段区域

hash记录前两段相等的和

再找后两段和也相等且在哈希表中的情况

判断能否把数组分成和相等的四段

class Solution

{

public:

bool splitArray(vector<int>& nums)

{

int n = nums.size();

if (n < 7)

return false;

vector<int> presum(n + 1); //虚指

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

presum[i + 1] = presum[i] + nums[i];

// 3个指针,4个区域分别为 (1) L (2) M (3) R (4)

for (int M = 3; M < n - 3; M ++)

{

unordered_set<int> memo;

for (int L = 1; L < M - 1; L ++)

{ //找区域(1)和(2)相等的情况

int zoom1 = presum[L];

int zoom2 = presum[M] - presum[L + 1];

if (zoom1 == zoom2)

memo.insert(zoom1);

}

for (int R = M + 2; R < n - 1; R ++)

{ // (3)和(4)相等,且在memo中出现过(即==(1)==(2))

int zoom3 = presum[R] - presum[M + 1];

int zoom4 = presum[n] - presum[R + 1];

if (zoom3 == zoom4 && memo.count(zoom3))

return true;

}

}

return false;

}

};

相关推荐
旖-旎39 分钟前
深搜练习(电话号码字母组合)(3)
c++·算法·力扣·深度优先遍历
谭欣辰42 分钟前
C++快速幂完整实战讲解
算法·决策树·机器学习
Mr_pyx1 小时前
【LeetHOT100】随机链表的复制——Java多解法详解
算法·深度优先
AIFarmer1 小时前
【无标题】
开发语言·c++·算法
AGV算法笔记1 小时前
CVPR 2025 最新感知算法解读:GaussianLSS 如何用 Gaussian Splatting 重构 BEV 表示?
算法·重构·自动驾驶·3d视觉·感知算法·多视角视觉
勤劳的进取家2 小时前
数据链路层基础
网络·学习·算法
Advancer-3 小时前
第二次蓝桥杯总结(上)
java·算法·职场和发展·蓝桥杯
ん贤3 小时前
加密算法(对称、非对称、哈希、签名...)
算法·哈希算法
superior tigre3 小时前
78 子集
算法·leetcode·深度优先·回溯
天威?*4 小时前
bitset的数据结构用法
算法·动态规划