- 根据给定一组既定数组去重置列表内元素顺序为_index_map 的顺序
_index_map = [4, 0, 1, 2, 3, 5, 11, 8, 10, 6, 12 ]
bank_credit_amount_differences_array_reset_data = [[row[_index_map[i][j]] for j in range(len(row))] for
i, row inenumerate(bank_credit_amount_differences_array)]
- 根据给定数组 和 指定数字 返回 指定数字在数组中的位置 二分查找实现
def find_closest_index_v2(arr, num):
根据给定数组 和 指定数字 返回 指定数字在数组中的位置 二分查找实现
# arr.sort() # 对数组进行排序
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == num:
if mid == len(arr) - 1 or arr[mid + 1] != num:
return mid
else:
left = mid + 1
elif arr[mid] < num:
left = mid + 1
else:
right = mid - 1
if left >= len(arr):
return len(arr) - 1
elif right < 0:
return 0
else:
if abs(num - arr[left]) <= abs(num - arr[right]): # 取值范围
return left
else:
return right
arr = [15.83, 17.75, 37.92, 40.0, 40.0, 40.0, 80.0, 80.0, 180.0, 200.0, 200.0, 249.0, 342.75, 500.0, 500.0, 500.0, 500.0, 500.0]
num = 83.33
find_closest_index_v2(arr, num)
def binary_search_last(self, nums, target):
'''
nums : 有序数组
target: 目标值
'''
left = 0
right = len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
if mid == len(nums) - 1 or nums[mid + 1] != target:
return mid
else:
left = mid + 1
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1