打擂台
nums1 = [1, 2, 4, 6, 8] nums2 = [3, 5, 7, 10, 12, 15, 23] # res = [] # while nums1 and nums2: # if nums1[0] < nums2[0]: # res.append(nums1.pop(0)) # else: # res.append(nums2.pop(0)) left, right = 0, 0 res = [] while left < len(nums1) and right < len(nums2): if nums1[left] < nums2[right]: res.append(nums1[left]) left += 1 else: res.append(nums2[right]) right += 1 temp = nums1[left:] + nums2[right:] res += temp print(res)
def test(nums): if not nums: return def helper(nums, start, end): if start >= end: return left, right = start, end mid = (left + right) // 2 piovt = nums[mid] while left < right: if left < right and nums[left] < piovt: left += 1 if left < right and nums[right] > piovt: right -= 1 if left < right: nums[left], nums[right] = nums[right], nums[left] helper(nums, start, mid-1) helper(nums, mid+1, end) return nums return helper(nums, 0, len(nums)-1) nums = [1,20,6,5,7,3] test(nums) nums
def test(nums, target): if not nums: return left, right = 0, len(nums) - 1 # 要小于等于,里面去折半 while left <= right: mid = (left + right) // 2 if nums[mid] == target: return mid elif nums[mid] < target: left = mid + 1 else: right = mid - 1 return def rotate_search(nums, target): if not nums: return left, right = 0, len(nums)-1 while left <= right: mid = (left + right) // 2 if nums[mid] == target: return mid if nums[mid] > nums[left]: # 左侧有序,右侧循环 if nums[left] < target and nums[mid] > target: right = mid -1 else: left = mid + 1 else: # 左侧循环,右侧有序 if nums[right] > target and nums[mid] < target: left = mid + 1 else: right = mid - 1 return res = test([1,2,3,4,5,6,7], 3) nums = [4,5,6,7,1,2,3] rotate_search(nums, 2)
时刻记着自己要成为什么样的人!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2020-03-16 关键词快速匹配范例