考虑到7=1+2+4,即三位的二进制,刚好切两次,切成1,2,4,这样每天都可以的工资都可以用这三段来表示,其中需要和工人进行交换
如果只有一个人戴黑色,则第一次关灯就知道自己是黑色,如果是两个人带,则,第一次因为对方没打,所以知道自己应该也是黑色的,所以第二次关灯会打自己,如果是三个人带,则第一次看到两个人有黑色,但没打,可能是只是他们,但是第二次还没打,说明自己也是黑色,否则第二次就打了,故第三次会一起打,即有三顶黑色帽子
1. 统计学习三要素:模型,策略,算法
实现统计学习步骤
2. 基本概念
**1. **Two Sum
题目描述:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
class Solution(object): def twoSum(self, nums, target): dct = {} for i, n in enumerate(nums): c = target - n if c in dct: return [dct[c], i] else: dct[n] = i
解题思路
利用enumerate函数,一次遍历记录住数组的内容和下标,如果对应的值在字典里,就可以返回其下标,否则将其内容映射为字典的下标
**2. **Binary Search
class Solution: def search(self, nums: List[int], target: int) -> int: lens = len(nums) high = lens -1 low = 0 while(high >= low): mid = int((high + low)/2) if target == nums[mid]: return mid elif target > nums[mid]: low = mid + 1 elif target < nums[mid]: high = mid - 1 return -1
基础的二分查找,需要注意重新设置的时候要把low的+1,high的-1,否则可能会无限循环。