Leetcode每日一题:977.squares-of-a-sorted-array(有序数组的平方)

在这里插入图片描述
思路:先找到里面绝对值最小的元素,然后双指针,一个指左边,一个指右边,比较两指针指向的当前元素,哪个小放哪个哪边指针指向下一个元素;最后把剩余没放进的一侧全部放入;

在这里插入图片描述

vector<int> sortedSquares(vector<int> &A)
{
    
    
	int mid = 0;
	int len = A.size();
	while (mid < len - 1)
	{
    
    
		if (abs(A[mid + 1]) > abs(A[mid]))
		{
    
    
			break;
		}
		mid++;
	}

	//此时A[mid]为整个数组中绝对值最小的;
	vector<int> res;
	int l = mid, r = mid + 1;
	while (l >= 0 && r < len)
	{
    
    
		if (abs(A[l]) > abs(A[r]))
		{
    
    
			res.push_back(pow(A[r], 2));
			r++;
		}
		else
		{
    
    
			res.push_back(pow(A[l], 2));
			l--;
		}
	}
	while (l >= 0)
	{
    
    
		res.push_back(pow(A[l], 2));
		l--;
	}
	while (r < len)
	{
    
    
		res.push_back(pow(A[r], 2));
		r++;
	}
	return res;
}

猜你喜欢

转载自blog.csdn.net/wyll19980812/article/details/108842984