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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[Leetcode][第977题][JAVA][有序数组的平方][排序][双指针]

發布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Leetcode][第977题][JAVA][有序数组的平方][排序][双指针] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【問題描述】[簡單]

【解答思路】

1. 排序

平方后排序 沒有使用排序的特性
時間復雜度:O(NlogN) 空間復雜度:O(1)

class Solution {public int[] sortedSquares(int[] A) {int[] ans = new int[A.length];for (int i = 0; i < A.length; ++i) {ans[i] = A[i] * A[i];}Arrays.sort(ans);return ans;} }
2. 雙指針 后插法

使用兩個指針分別指向位置 00 和 n-1n?1,每次比較兩個指針對應的數,選擇較大的那個逆序放入答案并移動指針。
時間復雜度:O(N) 空間復雜度:O(1)

class Solution {public int[] sortedSquares(int[] A) {int n = A.length;int[] ans = new int[n];for (int i = 0, j = n - 1, pos = n - 1; i <= j;) {if (A[i] * A[i] > A[j] * A[j]) {ans[pos] = A[i] * A[i];++i;} else {ans[pos] = A[j] * A[j];--j;}--pos;}return ans;} }

【總結】

1. 后插法 往往實現簡單 邊界條件簡單
2.雙指針算法大掃蕩

單串單向:30,71,76,1508
單串雙向:11,246,905,922,977
雙串單向:392,524,844,925,408
單串三指針:75,243,245,930

總結

以上是生活随笔為你收集整理的[Leetcode][第977题][JAVA][有序数组的平方][排序][双指针]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。