数组中只包含012,将数组升序排列,on时间复杂度o1空间复杂度
三个指针,和partition一样的思想~
class Solution:
def sort(self, nums):
res1 = 0
res2 = 0
res3 = 0
for i in range(len(nums)):
if nums[i] == 0:
nums[res2], nums[res3] = nums[res3], nums[res2]
nums[res1], nums[res2] = nums[res2], nums[res1]
res1 += 1
res2 += 1
res3 += 1
elif nums[i] == 1:
nums[res2], nums[res3] = nums[res3], nums[res2]
res2 += 1
res3 += 1
else:
res3 += 1
return nums
1000瓶液体10只小白鼠面试题答案
其实10只老鼠 对应的二进制就是有1024中情况啦,那么其实就可以解决1024中情况的问题。
比如 00000 00001 只要有1,就认为是给对应序号的老鼠喂药,然后看对应的序号的老鼠如果死去,那么就代表是该瓶毒药有问题。
比如是00000 00111 三只对应序号的老鼠死去,这时是0 1 2 那么对应的瓶子就是 1 + 2 + 4 = 7 也就是第7瓶药有问题。
所以做法就是第一个药喂给第一个老鼠,第二个药喂给前两个老鼠,最后一个药喂给所有的老师,然后看死去的老鼠的序号~~