Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Dalam C++, cari indeks penunjuk kiri dalam tatasusunan selepas kemungkinan langkah

Dalam C++, cari indeks penunjuk kiri dalam tatasusunan selepas kemungkinan langkah

WBOY
WBOYke hadapan
2023-09-09 13:09:02473semak imbas

Dalam C++, cari indeks penunjuk kiri dalam tatasusunan selepas kemungkinan langkah

Dalam soalan ini, kita diberikan array arr[] bersaiz N. Tugas kami adalah untuk mencari indeks penunjuk kiri selepas kemungkinan bergerak dalam tatasusunan.

Kami mempunyai dua penunjuk, satu penunjuk kiri dan satu lagi penunjuk kanan.

Penunjuk kiri bermula pada indeks 0 dan nilai meningkat.

Penunjuk kanan bermula dari indeks (n-1) dan nilainya berkurangan.

Jika jumlah penunjuk kiri kurang daripada jumlah penunjuk kanan, nilai penunjuk akan dinaikkan, jika tidak nilai penunjuk akan berkurangan. Dan nilai jumlah akan dikemas kini.

Mari kita fahami masalah ini melalui contoh,

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

Penjelasan ∎🎜# ∎🎜# ∎ terjemahan Bahasa Cina ialah:

Penjelasan

leftPointer = 0 -> sum = 5, rightPointer = 5 -> sum = 4. Move rightPointer
leftPointer = 0 -> sum = 5, rightPointer = 4 -> sum = 13. Move leftPointer
leftPointer = 1 -> sum = 11, rightPointer = 4 -> sum = 13. Move leftPointer
leftPointer = 2 -> sum = 14, rightPointer = 4 -> sum = 13. Move rightPointer
leftPointer = 2 -> sum = 14, rightPointer = 3 -> sum = 20. Move rightPointer
Position of the left pointer is 2.

Penyelesaian

#🎜🎜🎜# diselesaikan dengan mengalihkan saiz penunjuk kiri dan kanan mengikut jumlah penunjuk kiri dan kanan soalan. Kemudian semak sama ada penunjuk kiri adalah 1 lebih besar daripada penunjuk kanan.

Contoh

Contoh prosedur yang menggambarkan cara penyelesaian kami berfungsi

#include <iostream>
using namespace std;
int findIndexLeftPointer(int arr[], int n) {
   if(n == 1)
      return 0;
   int leftPointer = 0,rightPointer = n-1,leftPointerSum = arr[0], rightPointerSum = arr[n-1];
   while (rightPointer > leftPointer + 1) {
      if (leftPointerSum < rightPointerSum) {
         leftPointer++;
         leftPointerSum += arr[leftPointer];
      }
      else if (leftPointerSum > rightPointerSum) {
         rightPointer--;
         rightPointerSum += arr[rightPointer];
      }
      else {
         break;
      }
   }
   return leftPointer;
}
int main() {
   int arr[] = { 5, 6, 3, 7, 9, 4 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The index of left pointer after moving is "<<findIndexLeftPointer(arr, n);
   return 0;
}

Output

The index of left pointer after moving is 2
#🎜

Atas ialah kandungan terperinci Dalam C++, cari indeks penunjuk kiri dalam tatasusunan selepas kemungkinan langkah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam