2019-01-29 Leetcode Day 4

Squares of a Sorted Array

1. 题目描述

一个排好序的数组,把这个数组的每个元素取平方后排序,返回排好序的数组。

2. 解法

2.1 构造数组,利用内联函数排序

class Solution {
    public int[] sortedSquares(int[] A) {
        int N = A.length;
        int[] ans = new int[N];
        for (int i = 0; i < N; ++i)
            ans[i] = A[i] * A[i];

        Arrays.sort(ans);
        return ans;
    }
}

2.2 利用排序特性,正数负数分别比较,降低时间复杂度。

class Solution {
    public int[] sortedSquares(int[] A) {
        int N = A.length;
        int j = 0;
        while (j < N && A[j] < 0)
            j++;
        int i = j-1;

        int[] ans = new int[N];
        int t = 0;

        while (i >= 0 && j < N) {
            if (A[i] * A[i] < A[j] * A[j]) {
                ans[t++] = A[i] * A[i];
                i--;
            } else {
                ans[t++] = A[j] * A[j];
                j++;
            }
        }

        while (i >= 0) {
            ans[t++] = A[i] * A[i];
            i--;
        }
        while (j < N) {
            ans[t++] = A[j] * A[j];
            j++;
        }

        return ans;
    }
}

最后顺便练习了一下快速排序,但是实际效果并没有这么好:

class Solution {
    public int[] sortedSquares(int[] A) {
        for (int i=0;i<A.length; i++){
            A[i] = (int) Math.pow(A[i],2);
        }
        QuickSort(A, 0, A.length-1);
        return A;
    }
    public void QuickSort(int[] A, int start, int end){
        if(start < end) {
            int pivot = partion(A, start, end);
            QuickSort(A, start, pivot - 1);
            QuickSort(A, pivot + 1, end);
        }
    }
    public int partion(int []Array, int low, int high){
        int pivot = Array[high];
        int i = low -1;
        int temp;
        for (int j=low; j<high; j++){
            if (Array[j] < pivot){
                i++;
                temp = Array[j];
                Array[j] = Array[i];
                Array[i] = temp;
            }
        }
        temp = Array[i];
        Array[i+1] = Array[high];
        Array[high] = temp;
        return i+1;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天两个easy的题目,目前希望把easy的难度做到看完题就立即有思路后,在进一步做medium的题目。 1. J...
    码力平平菜鸡熊阅读 936评论 0 0
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 18,132评论 2 36
  • 先看App运行效果: react-native中有专门实现轮播图的模块Swiper,和引入React的方式一样,通...
    uniapp阅读 11,865评论 2 6
  • 孩子们就这样玩了一会,觉得累了,小龙把小鸟揣进裤兜,三两下爬上球去,把小鸟放进鸟窝,这个时候刚好小鸟妈妈回家了待着...
    阿改改阅读 962评论 0 0
  • 王善人在二十一岁时,通过跟表兄张家做活,人呼他为“做活的”,他一气悟了三个月,终于明道:“名者命也”。既是天命,必...
    王泽华wzh阅读 7,194评论 0 1