固定中间

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++)

presumi + 1 = presumi + numsi;

// 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 = presumL;

int zoom2 = presumM - presumL + 1;

if (zoom1 == zoom2)

memo.insert(zoom1);

}

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

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

int zoom3 = presumR - presumM + 1;

int zoom4 = presumn - presumR + 1;

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

return true;

}

}

return false;

}

};

相关推荐
aaaameliaaa1 小时前
字符函数和字符串函数
c语言·笔记·算法
城管不管2 小时前
ReAct、Plan-and-Execute、Reflection 三大智能 Agent 范式核心区别
java·人工智能·算法·spring·ai·动态规划
月疯2 小时前
二分法算法(水平等分图形面积)
算法
豆瓣鸡3 小时前
算法日记 - Day3
java·开发语言·算法
白白白小纯3 小时前
算法篇—反转链表
c语言·数据结构·算法·leetcode
Achou.Wang3 小时前
深入理解go语言-第5章 并发编程——Go的灵魂
大数据·算法·golang
The Chosen One9853 小时前
高进度算法模板速记(待完善)
java·前端·算法
土豆.exe6 小时前
Fastjson2 2.0.53 哈希碰撞 RCE:从原理到三种打法
算法·哈希算法
黄河123长江6 小时前
有限Abel群的结构()
算法
Jerry7 小时前
LeetCode 92. 反转链表 II
算法