當前位置:
首頁 >
关于stable_partition的问题 财富值41
發布時間:2023/11/30
24
博士
生活随笔
收集整理的這篇文章主要介紹了
关于stable_partition的问题 财富值41
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
假設負數是o,正數是x。從前往后遍歷,每次找到xx..xoo..o的子串,進行循環左移變為oo..oxx..x;下一次從上一次的x開始計算新的xx..xoo..o子串模式來轉換。每個字符最多被操作兩次,因此復雜度是O(N)。剩下的就是如果將xx..xoo..o在O(L)的復雜度內完成oo.oxx..x的變化。假設模式串為x1x2x3x4o1o2o3, 范圍內兩次倒置,第一次將兩個子串分別反轉,得到x4x3x2x1o3o2o1,第二次整體倒置得到o1o2o3x1x2x3x4。完成。一共是2*L次。綜上,時間復雜度O(N),每個元素最多移動了4次.空間復雜度O(1)
不要做交換,做拷貝就可以了. 因為要求時間復雜度為o(n).
例子:初始 [1, -1, 2, -2, 3, 4] 第一次拷貝,-1放在位置0 [-1, 1, 2, -2, 3, 4]第二次拷貝,-2放在位置1 [-1, -2, 1, 2, 3, 4]后面沒找到其它負數,就結束了.
假設數組為a, 1.先找到第一個整數,記好位置為i,然后找到后面遇到的第一個負數,位置為j, 保存a[j]到臨時變量里,將a[i, j-1]區間的數拷貝給a[i+1, j], 臨時變量賦值給a[i],2.位置i存放的是找到的負數3.繼續從j+1開始,找到下一個負數,位置為k, a[k]保存到臨時變量, 拷貝a[i+1, k-1] 到 a[i+2, k], 臨時變量賦值給a[i+1]4.此時i+1存放的是剛找到的負數5.繼續前面的過程
不要做交換,做拷貝就可以了. 因為要求時間復雜度為o(n).
例子:初始 [1, -1, 2, -2, 3, 4] 第一次拷貝,-1放在位置0 [-1, 1, 2, -2, 3, 4]第二次拷貝,-2放在位置1 [-1, -2, 1, 2, 3, 4]后面沒找到其它負數,就結束了.
假設數組為a, 1.先找到第一個整數,記好位置為i,然后找到后面遇到的第一個負數,位置為j, 保存a[j]到臨時變量里,將a[i, j-1]區間的數拷貝給a[i+1, j], 臨時變量賦值給a[i],2.位置i存放的是找到的負數3.繼續從j+1開始,找到下一個負數,位置為k, a[k]保存到臨時變量, 拷貝a[i+1, k-1] 到 a[i+2, k], 臨時變量賦值給a[i+1]4.此時i+1存放的是剛找到的負數5.繼續前面的過程
總結
以上是生活随笔為你收集整理的关于stable_partition的问题 财富值41的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乐山大佛河对面可以看吗
- 下一篇: node_modules不上传服务器导致