做海报的话网站,2022最近的新闻大事10条,网络文化经营许可证全国有多少张,seo成都培训给定一个n个不同元素的单峰数组A(意味着它的条目按递增顺序排列直到其最大元素#xff0c;之后其元素的递减顺序)#xff0c;则整数p (即增加的第一部分的长度)和k(第k个最小元素)给出算法以计算在O(log n)时间中运行的第k个最小元素的值。查找单峰数组中的第k个元素例子之后其元素的递减顺序)则整数p (即增加的第一部分的长度)和k(第k个最小元素)给出算法以计算在O(log n)时间中运行的第k个最小元素的值。查找单峰数组中的第k个元素例子A {1,23,50,30,20,2}p 2k3答20编辑我尝试这样做def ksmallest(arr1, arr2, k):if len(arr1) 0:return arr2[len(arr2)-k-1]elif len(arr2) 0:return arr1[k]mida1 (int)(len(arr1)/2)mida2 (int)((len(arr2)-1)/2)if mida1mida2if arr1[mida1]arr2[mida2]:return ksmallest(arr1, arr2[:mida2], k-(len(arr2)-mida2))else:return ksmallest(arr1[mida11:], arr2, k-mida1-1)else:if arr1[mida1]arr2[mida2]:return ksmallest(arr1[:mida1], arr2, k)else:return ksmallest(arr1, arr2[mida21:], k)2013-03-25KienMe1你试过了什么 –2013-03-25 21:42:292不应该是3 –2013-03-25 21:42:298随着第一部分的增加和其余的减少你基本上有两个排序的数组。查看[this](http://stackoverflow.com/a/12555973/1011995)或[this](http://stackoverflow.com/questions/4607945/how-to-find-the-kth-smallest-element在两个排序的数组中)或其他很多问题。 –2013-03-25 22:00:09