给定一个未sorting的数组,找出max j – i之间的差异,使得在O(n)中j > i和a[j] > a[i] 。 我能够findj和i在O(n^2)复杂性中使用微不足道的方法,但是想知道如何在O(n)做到这一点? input:{9,2,3,4,5,6,7,8,18,0} 输出:8(j = 8,i = 0) input:{1,2,3,4,5,6} 输出:5(j = 5,i = 0)
在进行Tour of Go的最后一个练习时 ,我决定需要一个( string , int )对的队列。 这很简单: type job struct { url string depth int } queue := make(chan job) queue <- job{url, depth} 但是这让我想到:Go中是否有内置的pair / tuple数据types? 支持从一个函数返回多个值 ,但是AFAICT,产生的多值元组并不是Gotypes系统中的一等公民。 是这样吗? 至于“你有什么尝试”部分,显而易见的语法(来自Python程序员的POV) queue := make(chan (string, int)) 没有工作。
我正在尝试使用自定义sorting谓词来构build堆。 由于进入它的值是“用户自定义”types,所以我不能修改它们的内置比较谓词。 有没有办法做到这样的事情: h = heapq.heapify([…], key=my_lt_pred) h = heapq.heappush(h, key=my_lt_pred) 或者甚至更好,我可以包装heapq函数在我自己的容器中,所以我不需要继续传递谓词。
最近我在刷新一些基础知识,发现合并sorting链表是一个很好的挑战。 如果你有一个很好的实现,那么在这里展示它。
为什么在Java中没有Pair是否有很好的理由? 这个C ++构造的等价物是什么? 我宁愿避免重新实现自己的。 似乎1.6提供了类似的东西(AbstractMap.SimpleEntry),但是这看起来相当复杂。