leetcode 977 有序数组的平方

简介: leetcode 977 有序数组的平方

暴力解法

fe6b2a2e8e81481681de69bc9142144d.png

调用sort函数

#include <iostream>
#include <vector>
#include<algorithm> 
using namespace std;
class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        vector<int> result;
        int temp = 0;
        for (int i = 0; i < nums.size(); i++)
        {
            result.push_back (nums[i] * nums[i]);
        }
        sort(result.begin() , result.end());
        return result;
    }
};
int main()
{
    Solution a;
    vector<int> num = { -4,-1,0,3,10 };
    vector<int> sum;
    sum = a.sortedSquares(num);
    for (int i=0; i < sum.size(); i++)
    {
        cout << sum[i] << ' ';
    }
    cout << endl;
  return 0;
}


双指针

#include <iostream>
#include <vector>
#include<algorithm> 
using namespace std;
class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        vector<int> result(nums.size(),0);
        int i = 0, j = nums.size() - 1 ,member =nums.size() - 1;
        while( i <= j)
        {
            if (nums[i] * nums[i] > nums[j] * nums[j])
            {
                result[member--] = nums[i] * nums[i];
                i++;
            }
            else
            {
                result[member--] = nums[j] * nums[j];
                j--;
            }
        }
        return result;
    }
};
int main()
{
    Solution a;
    vector<int> num = { -4,-1,0,3,10 };
    vector<int> sum;
    sum = a.sortedSquares(num);
    for (int i=0; i < sum.size(); i++)
    {
        cout << sum[i] << ' ';
    }
    cout << endl;
  return 0;
}


二刷

库函数


class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        for(int i=0 ;i<nums.size();i++)
        {
            nums[i] = pow(nums[i],2);;
        }
        sort(nums.begin(),nums.end());
        return nums;
    }
};


双指针

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        int left=0 ,right = nums.size()-1;
        vector<int> result;
        while(left<=right)
        {
            if( pow(nums[left],2) >= pow(nums[right],2) )
            {
                result.insert(result.begin() , pow(nums[left],2) );
                left++;
            }else
            {
                 result.insert(result.begin() , pow(nums[right],2) );
                right--;
            } 
        }
        return result;
    }
};



相关文章
|
1月前
leetCode(删除有序数组中的重复项)
如何在不使用额外空间的情况下,通过双指针法原地删除有序数组中的重复项。
33 2
|
3月前
|
存储 Java API
LeetCode------合并两个有序数组(4)【数组】
这篇文章介绍了LeetCode上的"合并两个有序数组"问题,并提供了三种解法:第一种是使用Java的Arrays.sort()方法直接对合并后的数组进行排序;第二种是使用辅助数组和双指针技术进行合并;第三种则是从后向前的双指针方法,避免了使用额外的辅助数组。
LeetCode------合并两个有序数组(4)【数组】
|
1月前
【LeetCode 48】108.将有序数组转换为二叉搜索树
【LeetCode 48】108.将有序数组转换为二叉搜索树
40 0
|
3月前
|
算法
LeetCode第26题删除有序数组中的重复项
这篇文章介绍了LeetCode第26题"删除有序数组中的重复项"的解题方法,通过使用双指针技巧,高效地去除数组中的相邻重复元素。
LeetCode第26题删除有序数组中的重复项
|
3月前
|
算法
LeetCode第80题删除有序数组中的重复项 II
文章介绍了LeetCode第80题"删除有序数组中的重复项 II"的解法,利用双指针技术在O(1)空间复杂度内原地删除重复元素,并总结了双指针技术在处理有序数组问题中的应用。
LeetCode第80题删除有序数组中的重复项 II
|
3月前
|
Python
【Leetcode刷题Python】977. 有序数组的平方
解决LeetCode "有序数组的平方" 问题的方法:使用Python内置的快速排序、直接插入排序(但会超时)和双指针技术,并给出了每种方法的Python实现代码。
21 1
【Leetcode刷题Python】977. 有序数组的平方
|
3月前
|
算法
LeetCode第88题合并两个有序数组
文章分享了LeetCode第88题"合并两个有序数组"的解法,通过从后向前的合并策略避免了数组元素的前移,使用三个指针高效地完成了合并过程。
|
3月前
|
Python
【Leetcode刷题Python】108. 将有序数组转换为二叉搜索树
LeetCode上108号问题"将有序数组转换为二叉搜索树"的Python实现,通过递归选取数组中间值作为根节点,构建高度平衡的二叉搜索树。
25 2
|
3月前
|
算法 Java
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
54 0
|
3月前
|
Python
【Leetcode刷题Python】26. 删除有序数组中的重复项
本文提供了一种使用快慢指针法在原地删除升序数组中重复元素的Python实现,返回删除后数组的新长度,同时保持元素的相对顺序。
44 0