• 360. Sort Transformed Array


        /*
         * 360. Sort Transformed Array
         * 2016-7-14 by Mingyang
         * 这个题目吧一开始还做错了,一看就是初中数学没学好,抛物线定理,a大于0像上嘛,肯定两边相比最大的就最大嘛
         * 再看看a小于0的时候,向下,那么就是两边相比最小的肯定最小
         * 自己一开始只考虑了a为0的情况。
         * 另外参考了大神的代码,大神少用了一个list,二用一个index来代替array中现在的index
         * 因为我们确认了array的长度是len
         */
        //自己的错误代码
        public static int[] sortTransformedArray(int[] nums, int a, int b, int c) {
            int len = nums.length;
            if (nums == null || len == 0)
                return null;
            int begin = 0;
            int end = len - 1;
            List<Integer> list = new ArrayList<Integer>();
            while (begin <= end) {
                int left = a * (int) Math.pow(nums[begin], 2.0) + b * nums[begin] + c;
                int right = a * (int) Math.pow(nums[end], 2.0) + b * nums[end] + c;
                if (left < right) {
                    list.add(0, right);
                    end--;
                } else {
                    list.add(0, left);
                    begin++;
                }
            }
            int[] res = new int[list.size()];
            for (int i = 0; i < res.length; i++) {
                res[i] = list.get(i);
            }
            return res;
        }
        // 大神的
        public int[] sortTransformedArray1(int[] nums, int a, int b, int c) {
            int n = nums.length;
            int[] sorted = new int[n];
            int i = 0, j = n - 1;
            int index = a >= 0 ? n - 1 : 0;
            while (i <= j) {
                if (a >= 0) {
                    sorted[index--] = quad(nums[i], a, b, c) >= quad(nums[j], a, b, c) ? quad(nums[i++], a, b, c)
                            : quad(nums[j--], a, b, c);
                } else {
                    sorted[index++] = quad(nums[i], a, b, c) >= quad(nums[j], a, b, c) ? quad(nums[j--], a, b, c)
                            : quad(nums[i++], a, b, c);
                }
            }
            return sorted;
        }
        private int quad(int x, int a, int b, int c) {
            return a * x * x + b * x + c;
        }
  • 相关阅读:
    文件权限---I
    python查看变量在内存中的地址
    Python3 基本数据类型
    print语法
    任务管理器启动项显示“没有可显示的启动项”如何解决?
    nginx 虚拟主机配置
    nginx 高级应用
    nginx 日志文件详解
    nginx 编译安装与配置使用
    python获取header脚本
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5672525.html
Copyright © 2020-2023  润新知