找出最接近原点的点,其实就是看它们距离的长短,排个序就好,但关键是
它有可能出界,
条件是最多一万个点,每个点的xy值就是一万,那么一万的平方就是10000 0000,相加就是20000 0000,最大数214783647
20000 0000
21478 3647
嗯,刚好,没有任何关系。
然后你用选择排序排前n个就好了。。。好简单啊。。。
leetcode的难易程度应该跟最简单的代码量为标准的。
经过判断,常规方法果然有时间限制的。
要想进一步压缩时间,那么多少位的位置就不应该知道了,这个怎么编码呢?
其实就是一个简单的排序问题,并且题目中的要求低,时间复杂度要求高,分明就是让你用不稳定排序,毕竟排序就那九种,没有什么新的了,反正排序必花费nlogn的时间。要更少必然不能使用排序。。
看看大神的解法,将时间复杂度压缩到On了,真厉害,值得学习。。
// 找k为哨兵
// 从头向后遍历,如果这个数比哨兵小且在哨兵右边,调换个个
// 如果这个数比哨兵大且在哨兵左边,调个个
// 如果遍历到i==k而且哨兵位置也等于k,结束
// 如果遍历到k但是哨兵位置小于k,进行下一次迭代,只不过是从begin开始
// 如果遍历到k但是哨兵位置大于k,以k为哨兵,重新遍历一遍,这么一个递归
// 如果这样的话,我并不认为这个能 节省时间复杂度啊
如果说,在比较的过程中,不断接近k的位置,怎么样?就会有不确定性
算了,nlogn吧,难受。
因此在做题的时候,首先要看自己的时间复杂度,如果时间复杂度太普通,就不要做了,早晚会超时的。别说进90%,他这个平台误差太大,只要时间复杂度最小就行。
相信我,快排肯定能过的。
leetcode 973.最接近原点的K个点
最新推荐文章于 2020-11-09 11:32:56 发布