Lecture Notes on 20 Mar 2017 # determine if it is possible to split a list into two equal halves def can_balance (nums): sum_nums = sum(nums) if (sum_nums % 2 == 1): return False sum_half = 0 idx = 0 while (idx < len(nums)): sum_half += nums[idx] if (sum_half == sum_nums // 2): return True if (sum_half > sum_nums // 2): return False idx += 1 # find maximum span of two items that are the same in a list def max_span (nums): span_max = 0 for i in range (len(nums)): j = len (nums) - 1 while (j >= i): if (nums[i] == nums[j]): span = j - i + 1 if (span > span_max): span_max = span break j = j - 1 return span_max