题目及暴力法解法在之前的这篇博客,想了解的可以移步到这里:
力扣977题——有序数组的平方
双指针法:
因为暴力法的时间复杂度还是太高了,有O(nlogn)这么多,这次就使用双指针法只需要O(n):
解题思路
建了一个新数组a用来存放平方,新数组使用一个k指针指向数组的末尾;
(这里数组可以随便起名字,可以叫a也可以起别的;同样指针k也是只要不和java关键字相同)
用一个指针指向题目数组的开头,另一个指向数组的末尾,这里分别用 l 和 r来定义;
而l <= r呢,就是说两指针相等时也可以说相遇时我们就完成了数组的一次遍历,在遍历时我们要比较两个指针所指向数平方的大小,取出较大值放入我们定义的新数组a中,并让k指针再退一个。
因为题目说按非递减顺序排嘛,如果按照非递增来排,就把k定义到新数组开头,再让k增一个。
那么如此比较,我们最后就能得到一个按照非递减顺讯排列的平方数组a,最后返回a就可以了。
ps:博主是小菜,最后把return写成了result a,还在想哪出错了找半天hh
共勉!
标签:977,平方,题目,指向,力扣,数组,指针 From: https://blog.csdn.net/suibiansa_/article/details/145121507