日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode360. 有序转化数组

發(fā)布時間:2023/12/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode360. 有序转化数组 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

給你一個已經(jīng)?排好序?的整數(shù)數(shù)組?nums?和整數(shù)?a、b、c。對于數(shù)組中的每一個數(shù) x,計算函數(shù)值?f(x) = ax2 + bx + c,請將函數(shù)值產(chǎn)生的數(shù)組返回。

要注意,返回的這個數(shù)組必須按照 升序排列,并且我們所期望的解法時間復(fù)雜度為?O(n)。

示例 1:

輸入: nums = [-4,-2,2,4], a = 1, b = 3, c = 5
輸出: [3,9,15,33]
示例 2:

輸入: nums = [-4,-2,2,4], a = -1, b = 3, c = 5
輸出: [-23,-5,1,7]

思路:

先判斷是否為二次函數(shù)。

如果是,再判斷開口的上下,根據(jù)和對稱軸點的距離來判斷函數(shù)值的大小,走雙指針的邏輯。

class Solution {public int[] sortTransformedArray(int[] nums, int a, int b, int c) {int len=nums.length;int[] ans=new int[len];if(a==0){if(b>0){for(int i=0;i<len;i++){ans[i]=b*nums[i]+c;}}else{for(int i=0;i<len;i++){ans[i]=b*nums[len-i-1]+c;}}}else if(a>0){double mid = -b * 1.0 / a / 2;int start=0;int end=len-1;int index=len-1;while(start<=end){if(Math.abs(mid-nums[start])>Math.abs(mid-nums[end])){ans[index--]=a*nums[start]*nums[start]+b*nums[start]+c;start++;}else{ans[index--]=a*nums[end]*nums[end]+b*nums[end]+c;end--;}}}else{double mid = -b * 1.0 / a / 2;int start=0;int end=len-1;int index=0;while(start<=end){if(Math.abs(mid-nums[start])>Math.abs(mid-nums[end])){ans[index++]=a*nums[start]*nums[start]+b*nums[start]+c;start++;}else{ans[index++]=a*nums[end]*nums[end]+b*nums[end]+c;end--;}}}return ans;} }

?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的leetcode360. 有序转化数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。