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

WBOY
Lepaskan: 2023-09-09 13:09:02
ke hadapan
469 orang telah melayarinya

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
Salin selepas log masuk

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.
Salin selepas log masuk

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;
}
Salin selepas log masuk

Output

The index of left pointer after moving is 2
Salin selepas log masuk
#🎜

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!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!