classSolution:defsearchInsert(self, nums: List[int], target:int)->int:for i inrange(len(nums)):if target > nums[len(nums)-1]:returnlen(nums)elif target < nums[i]or target == nums[i]:return i
elif nums[i]< target and target < nums[i+1]:return i+1
2.2代码——快乐数
classSolution:defisHappy(self, n:int)->bool:
not_happly_num_set ={0,1,4,16,37,58,89,145,42,20}whilenot(n in not_happly_num_set):
res =0while n:
div,mod =divmod(n,10)
res +=pow(mod,2)
n = div
n = res
return1if n==1else0
classSolution:defwordPattern(self, pattern:str,str:str)->bool:
t =str.split()iflen(pattern)!=len(t):returnFalse
dct ={}for i inrange(len(pattern)):if pattern[i]notin dct:if t[i]in dct.values():returnFalse
dct[pattern[i]]= t[i]else:if dct[pattern[i]]!= t[i]:returnFalsereturnTrue
2.6代码——两个数组的交集
classSolution:defintersection(self, nums1: List[int], nums2: List[int])-> List[int]:
array =[]for m in nums1:if m in nums2 and m notin array:
array.append(m)return array
2.7代码——两个数组的交集 II
classSolution:defintersect(self, nums1:[int], nums2:[int])->[int]:
nums1.sort()
nums2.sort()
r =[]
left, right =0,0while left <len(nums1)and right <len(nums2):if nums1[left]< nums2[right]:
left +=1elif nums1[left]== nums2[right]:
r.append(nums1[left])
left +=1
right +=1else:
right +=1return r
```![在这里插入图片描述](https://img-blog.csdnimg.cn/20200825113757374.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTU1ODQx,size_16,color_FFFFFF,t_70#pic_center)## 2.8代码——分割数组的最大值
```python
classSolution:defsplitArray(self, nums: List[int], m:int)->int:
left, right =max(nums),sum(nums)while left < right:
mid =(left + right)//2
sums, cnt =0,1for i in nums:if sums + i > mid:
cnt +=1
sums = i
else:
sums += i
if cnt <= m:
right = mid
else:
left = mid +1return left
2.9代码——根据字符出现频率排序
classSolution:deffrequencySort(self, s:str)->str:return''.join([i * j for i, j in collections.Counter(s).most_common()])
``![在这里插入图片描述](https://img-blog.csdnimg.cn/20200825114103664.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTU1ODQx,size_16,color_FFFFFF,t_70#pic_center)
`
## 2.10代码——有序数组中的单一元素
```python
classSolution:defsingleNonDuplicate(self, nums: List[int])->int:
left =0
right =len(nums)-1while left<right:
mid =(left+right)//2if(mid ==0or nums[mid]!= nums[mid-1])and nums[mid]!= nums[mid+1]:return nums[mid]elif nums[mid]== nums[mid+1]:if(mid-left)%2==0:
left = mid
else:
right = mid-1else:if(mid-left+1)%2==0:
left = mid+1else:
right = mid
return nums[left]