# CSPT17 Lecture 5
## [Pivot Index](https://leetcode.com/problems/find-pivot-index)
```
class Solution:
"""
Understand
[1,7,3,6,5,6] --> 3
[] --> -1
[1,2,3] --> -1
Plan
Keep track of two sums: left sum and right sum
Right sum is initialized to sum of total list
Walk the list from left to right
Keep adding left sum
Update right sum to subtract the current element
if left sum == right sum then we've found the pivot index
return -1
Runtime O(n)
Space O(1)
"""
def pivotIndex(self, nums: List[int]) -> int:
leftSum = 0
rightSum = sum(nums)
for (i, num) in enumerate(nums):
if i - 1 >= 0:
leftSum += nums[i - 1]
rightSum -= nums[i]
if leftSum == rightSum:
return i
return -1
```
## [Add One](https://leetcode.com/problems/plus-one/)
```
class Solution:
"""
Understand
[1,2,3] --> [1,2,4]
[9,9] --> [1,0,0]
[2,0,9] --> [2,1,0]
[0] --> [1]
Plan
Iterate the list backwards and keep track of the carry
In each digit we need to update we
make sure if there's a carry for the next digit
Make sure to insert carry at the front of the list if needed
"""
def plusOne(self, digits: List[int]) -> List[int]:
carry = 1
i = len(digits) - 1
while i >= 0:
currSum = digits[i] + carry
carry = int(currSum / 10)
currSum = currSum % 10
digits[i] = currSum
i -= 1
if carry > 0:
digits.insert(0, carry)
return digits
```