คำอธิบายปัญหา
ให้อาร์เรย์ A ของ 0 และ 1 แบ่งเป็น 3 ส่วนไม่ว่าง ที่แทนค่า binary เท่ากัน คืน [i,j] ที่ i+1 A = [0,1,0,1,1] → Output: [0,4]ตัวอย่าง
ข้อสังเกตสำคัญ
แนวทางแก้ปัญหา
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
class Solution {
int getIdx(vector<int>& a, int left, int right) {
while(left < right && a[left] == 0) left++;
while(right < a.size()) {
if(a[left] != a[right]) return -1;
left++; right++;
}
return left - 1;
}
public:
vector<int> threeEqualParts(vector<int>& A) {
vector<int> ret = {-1, -1};
int num = 0, n = A.size();
for(int x : A) num += x;
if(num % 3 != 0) return ret;
if(num == 0) return {0, 2};
int req = num / 3;
int idx = n - 1;
for(int temp=0; idx>=0 && tempความซับซ้อน