Find Pivot Index

Butun sonlar nums massivi berilgan bo'lsa, ushbu massivning pivot indeksini hisoblang.

Pivot indeksi indeksning chap tomonidagi barcha raqamlarning yig'indisi indeksning o'ng tomonidagi barcha raqamlarning yig'indisiga teng bo'lgan indeksdir.

Agar indeks massivning chap chetida bo'lsa, chap yig'indi 0 ga teng, chunki chap tomonda elementlar yo'q. Bu massivning o'ng chetiga ham tegishli.

Eng chap burchak indeksini qaytaring. Agar bunday indeks mavjud bo'lmasa, -1 ni qaytaring.

Example 1:

Input: nums = [1,7,3,6,5,6]
Output: 3
Explanation:
Pivot indeksi 3 ga teng.
Left sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11
Right sum = nums[4] + nums[5] = 5 + 6 = 11

Example 2:

Input: nums = [1,2,3]
Output: -1
Explanation:
Muammo bayonotidagi shartlarni qondiradigan indeks yo'q.

Example 3:

Input: nums = [2,1,-1]
Output: 0
Explanation:
Pivot indeksi 0 ga teng.
Left sum = 0 (0 indeksining chap tomonida hech qanday element yo'q)
Right sum = nums[1] + nums[2] = 1 + -1 = 0

Cheklovlar:

  • 1 <= nums.length <= 104

  • -1000 <= nums[i] <= 1000

Eslatma: Bu savol 1991 yilgi savol bilan bir xil: link

Hint-1:

sumLeft massivi yarating, bunda sumLeft[i] i indeksining chap tomonidagi barcha raqamlar yig'indisidir.

Hint-2:

SumRight massivi yarating, bunda sumRight[i] i indeksining o'ng tomonidagi barcha raqamlar yig'indisidir.

Hint-3:

Har bir i indeksi uchun sumLeft[i] sumRight[i] ga teng ekanligini tekshiring. Agar topilmasam, -1 ni qaytaring.

func pivotIndex(nums []int) int {
	l, s := 0, 0

	for _, v := range nums {
		s += v
	}

	for i, _ := range nums {
		if l == s-l-nums[i] {
			return i
		}
		l += nums[i]
	}

	return -1
}

© Leetcode link

Last updated

Was this helpful?