美文网首页Leetcode模拟面试算法提高之LeetCode刷题
[LeetCode][Python]977. 有序数组的平方

[LeetCode][Python]977. 有序数组的平方

作者: bluescorpio | 来源:发表于2019-08-17 11:07 被阅读0次

给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

示例 1:

输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100]
示例 2:

输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121]

提示:
1 <= A.length <= 10000
-10000 <= A[i] <= 10000
A 已按非递减顺序排序。

一开始也是没有什么思路,连排序都没想到,后来参考了一下专家的解法,豁然开朗

方法一:排序
思路与算法

创建一个新的数组,它每个元素是给定数组对应位置元素的平方,然后排序这个数组。这对于Python比较方便,它有自带的sort方法

方法二:双指针
思路
因为数组 A 已经排好序了, 所以可以说数组中的负数已经按照平方值降序排好了,数组中的非负数已经按照平方值升序排好了。

算法

首先,确定正值和负值临界点,然后正值部分向尾部走,负值部分向头部走。接下来就是比较数字平方的大小,依次放入一个空列表

class Solution:
    def sortedSquares(self, A: List[int]) -> List[int]:
        N = len(A)
        j = 0
        # determin negative and positive part
        while (j < N) and (A[j] < 0):
            j+=1
        i = j-1
        ans = []
        while (i>=0 and j < N):
            if(A[i]**2 < A[j]**2):
                ans.append(A[i]**2)
                i -= 1
            else:
                ans.append(A[j]**2)
                j += 1
        
        while i >= 0:
            ans.append(A[i]**2)
            i -= 1
            
        while j<N:
            ans.append(A[j]**2)
            j += 1
        return ans

相关文章

  • 977. 有序数组的平方

    //977. 有序数组的平方https://leetcode-cn.com/problems/squares-of...

  • 61.有序数组的平方

    day13: 977. 有序数组的平方[https://leetcode-cn.com/problems/squa...

  • [LeetCode][Python]977. 有序数组的平方

    给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 1: 输入...

  • LeetCode 977. 有序数组的平方

    题目 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 ...

  • 第 2 天 双指针

    977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组...

  • ARTS Week 01

    Algorithm 题目 977. 有序数组的平方给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的...

  • 977. 有序数组的平方

    977. 有序数组的平方 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺...

  • 977. 有序数组的平方

    【题目描述】给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 【示...

  • 977. 有序数组的平方

    给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 1: 输入...

  • 977.有序数组的平方

    题目 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 1:...

网友评论

    本文标题:[LeetCode][Python]977. 有序数组的平方

    本文链接:https://www.haomeiwen.com/subject/qguhsctx.html