Leetcode - Sort Transformed Array

My code:

public class Solution {
    private int a = 0;
    private int b = 0;
    private int c = 0;
    public int[] sortTransformedArray(int[] nums, int a, int b, int c) {
        if (nums == null || nums.length == 0) {
            return null;
        }
        this.a = a;
        this.b = b;
        this.c = c;
        
        int n = nums.length;
        int[] ret = new int[n];
        int begin = 0;
        int end = nums.length - 1;
        int k = (a >= 0 ? ret.length - 1 : 0);
        while (begin <= end) {
            if (a >= 0) {
                ret[k--] = (t(nums[begin]) >= t(nums[end]) ? t(nums[begin++]) : t(nums[end--]));
            }
            else {
                ret[k++] = (t(nums[begin]) <= t(nums[end]) ? t(nums[begin++]) : t(nums[end--]));
            }
        }
        
        return ret;
    }
    
    private int t(intnum) {
        return this.a * num * num + this.b * num + this.c;
    }
}

浪费了好多时间做这道题目。。。
结果还是没做出来,再做十分钟应该可以做出来,但是代码已经写了一百多行了,做出来也没有意义了。

我也看出了是函数的问题,但感觉要分好多类型,
a>0,<0,=0
if a == 0: b>0,<0
-b/2a ,作为分割线, nums 可以全部在左边,也可以全部在右边,又可以都在。再配上 a>0,<0,感觉情况特别多。

但是看了答案的解法,发现真的很简单。
reference:
https://discuss.leetcode.com/topic/48424/java-o-n-incredibly-short-yet-easy-to-understand-ac-solution/2

我们永远只要首尾进行比较,适用于任何情况。
看代码具体体会吧。

Anyway, Good luck, Richardo! — 09/05/2016

    原文作者:Richardo92
    原文地址: https://www.jianshu.com/p/74837d04b7e7#comments
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞