只有0 1的陣列

2021-09-03 10:53:12 字數 1463 閱讀 8655

給定乙個只包含0或1的陣列,找出其中包含相同0的個數和1的個數的最

長子序列,輸出子串行的長度, 要求在o(n)的時間複雜度內完成。

如:對於陣列[0,0,1,1,0],輸出結果為4。子串行[0,0,1,1] 或

[0,1,1,0] 為符合條件的最長子序列,包含了兩個1和兩個0,個數相同。

思路:

將所有0變為-1   0和1數目相等 就變成了求子陣列和為0的最大長度

public static int maxlengthin01(int arr) 

} int res = maxlength(arr, 0);

return res;

} public static int maxlength(int arr, int aim)

// key 某個累加和sum value 這個累加和最早出現的次數

// 取以每個位置為結尾的等於定值的子陣列的最大長度的最大值

hashmapmap = new hashmap<>();

map.put(0, -1); // 非常重要 意思是累加和為0 最早出現的位置為 -1 預設

int res = 0;

int sum = 0; // 字首和 到i位置

for (int i = 0; i < arr.length; i++)

if (!map.containskey(sum))

} return res;

}

再次改進公升級 

若此不僅只有0和1  還有其他數  求0和1數目相等的最大子陣列的長度

依然簡單 可以將0變為-1  其他數字變為0  還是成了求累加和為0的題了

public static int maxlengthin01(int arr) else if(arr[i]!=0&&arr[i]!=1)

} int res = maxlength(arr, 0);

return res;

} public static int maxlength(int arr, int aim)

// key 某個累加和sum value 這個累加和最早出現的次數

// 取以每個位置為結尾的等於定值的子陣列的最大長度的最大值

hashmapmap = new hashmap<>();

map.put(0, -1); // 非常重要 意思是累加和為0 最早出現的位置為 -1 預設

int res = 0;

int sum = 0; // 字首和 到i位置

for (int i = 0; i < arr.length; i++)

if (!map.containskey(sum))

} return res;

}

實現只有0 1 2的陣列的排序

題目 乙個陣列中只有0,1,2三種元素,要求對這樣的陣列進行排序。第一眼看到這樣的題目,會舉得非常簡單,只需要兩次遍歷陣列就可以完成了。第一次遍歷,掃瞄陣列中的元素,每次遇到0則count0 遇到1則count1 遇到2則count2 這樣一趟下來就能夠統計出陣列中0,1,2的個數了。然後第二次遍歷...

01陣列建立

import numpy as np 陣列的建立 numpy的array函式傳入的物件是可迭代物件。一維陣列傳入乙個不巢狀的物件。arr1 np.array 4,5,2,6,3 二維陣列傳入巢狀迭代物件 arr2 np.array 1,2,5 6,8,25 26,52,71 print 一維陣列 n...

01 稀疏陣列

參考 韓順平資料結構和演算法 當乙個陣列 此處針對二維 中大部分元素為 或者為同乙個值的陣列時,可以採用稀疏陣列來儲存該陣列。通常定義乙個二維陣列去儲存資料,其中必定會有一些無效資訊 可以認為是0 所以乙個10 10的二維陣列,即使其中只有20個有效資料,如果不進行優化,需要占用100個資料空間 如...