Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หา Index ของ Left Pointer หลังเลื่อนตามเงื่อนไขใน Array ใน C++

ในปัญหานี้ เราได้รับ array arr[] งานคือหาตำแหน่งของ left pointer หลังเลื่อนตามกฎ:

  • Left pointer เริ่ม index 0, Right pointer เริ่ม index n-1
  • Left sum = arr[0], Right sum = arr[n-1]
  • ถ้า Left sum < Right sum → Left++ และบวก arr[left] เข้า left sum
  • ถ้า Left sum > Right sum → Right-- และบวก arr[right] เข้า right sum
  • ถ้าเท่ากัน → หยุด
  • หยุดเมื่อ left >= right - 1

ตัวอย่าง

Input: arr[] = {5, 6, 3, 7, 9, 4} Output: 2

Steps: L=0(5) R=5(4)→R=4(13)→L=1(11)→L=2(14)→R=3(20)→Stop, L=2

ตัวอย่างโค้ด

#include <iostream>
using namespace std;

int findLeftPointerIndex(int arr[], int n) {
    if (n == 1) return 0;
    int left = 0, right = n - 1;
    int leftSum = arr[0], rightSum = arr[n - 1];
    
    while (right > left + 1) {
        if (leftSum < rightSum) leftSum += arr[++left];
        else if (leftSum > rightSum) rightSum += arr[--right];
        else break;
    }
    return left;
}

int main() {
    int arr[] = {5, 6, 3, 7, 9, 4};
    cout << findLeftPointerIndex(arr, 6); // 2
    return 0;
}

ผลลัพธ์

The index of left pointer after moving is 2