+=:原地操作
給陣列分配了一塊兒地,對它進行操作,就是在已有的地上進行翻新播種,任何改變都在原地進行
+:非原地操作
給陣列重新開闢了一塊兒地,對它進行操作,不會影響原來的值
import numpy as np
a=np.array([1,2,3])
b=aa+=np.array([1,1,1])#原地操作,在原有的操作空間中進行改變
print (a) #a也改變了
print (b) #b也改變了
c=np.array([1,2,3])
d=cc=c+np.array([1,1,1])#非原地操作,操作會另外開啟操作空間
print (c)#c已經重新指向了新的地方
print (d)#d依然指向原來分配給c的空間
[2 3 4][2 3 4]
[2 3 4]
[1 2 3]
import numpy as np
a=np.array([1,2,3,4])
b=a[:2]#a中的1、2個元素切片賦給b變數
b[0]=10 #b中第乙個元素改為10
print (a)#切片操作會影響原始的值,原地操作,列表不會進行原地操作,這樣numpy對一維陣列的操作比列表效率高
print (b)
[10 2 3 4][10 2]
原地歸併與非原地歸併
看演算法時看到原地歸併和非原地歸併,不是很懂兩者的區別,故記錄如下 原地演算法 in place algorithm 基本上不需要額外輔助的資料結構,然而,允許少量額外的輔助變數來轉換資料的演算法。當演算法執行時,輸入的資料通常會被要輸出的部分覆蓋掉。wiki 那麼我們來看下兩種演算法的 非原地cl...
原地排序與鍊錶翻轉
有這樣乙個問題 有個長度為 n 的 key,val 陣列 a,其中 key 是 int 型別,並且其值在 0,n 之間 前閉後開,包括 0 不包括 n 該陣列按 key 是亂序的,但沒有重複 key。要求 對 a 原地按 key 排序,可以使用常數個臨時變數,不允許使用其它額外空間,時間複雜度必須是...
非原地操作 114 二叉樹展開為鍊錶
給定乙個二叉樹,原地將它展開為乙個單鏈表。例如,給定二叉樹 1 2 5 3 4 6 將其展開為 1 2 3 4 5 6將乙個二叉樹給它拆開,拆成鍊錶。其實這個題目要求是原地操作,也就是時間複雜度是o 1 但是原地操作我沒看明白,所以用了乙個o n 的方法去解決這個問題。可以進行先序的遍歷操作,然後把...