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