
刷题
xiaoliizi
这个作者很懒,什么都没留下…
展开
-
刷题-两球之间的距离最短
一、解题思路题目链接其实依然是使用二分来解,只不过这次的二分并不是数组下标的二分,而是每个桶之间距离的二分。审题后不难理解,最终答案肯定在相邻桶最短距离 ~ 两头桶之间的距离 之间。我们在这个范围进行二分即可。最后时间复杂度应该是O(Nlog(N)),严格来说是O(arrLen * log(maxDistance))二、代码1、check:负责检查指定距离是否能实现,依次遍历所有桶,看最后球是否能放满即可。func check(position []int, ballNum int, minL原创 2020-08-29 11:04:43 · 352 阅读 · 1 评论 -
刷题-全排列
一、解法:深度遍历+剪枝题解这里写得比较清楚,其实就是在遍历过程中要避免重复的元素连续出现,只需要在遍历的时候做个标记就可以了。二、总结这种不能通过枚举解决的方法,确实只能靠深度遍历来解决代码地址...原创 2020-07-24 11:23:31 · 123 阅读 · 0 评论 -
刷题-盛水最多的容器
leetcode链接一、最直接的解法:n^2 循环二、O(N) 解法:双指针解法:头尾定两个指针,然后不断向内收缩,每次只将高度更低的那头收缩。那么为什么要移动高度更小的那个位置呢?这样移动真的能够让后续的解更优吗?换一种思路理解一下:如果我们移动高度更大的那个指针,由于总容量的计算公式是(两头中更小的高度 * 两头的距离),因此移动后容量只能更小,不可能更大。所以要选择移动高度更小的头。缩小范围的过程中,容量的整体趋势肯定还是变小的。只有移动高度更小的头,才能有继续增大容量的机会。三、总结原创 2020-07-23 16:28:25 · 162 阅读 · 0 评论