演算法之雙指標法 一

2021-09-14 00:36:57 字數 1497 閱讀 1106

雙指標法在很多場景及演算法中都有使用

主要應用的演算法題如下:

乙個陣列中有奇數也有偶數,將所有奇數放到陣列左邊,將所有偶數放到陣列右邊

int array = ;

int i = 0;

int j = array.lentgh - 1;

while (i < j);

int even = 0; //偶數

int odd = 1; //奇數

int end = array.length - 1;

while(even <= end && odd <= end)else

}for(int i =0; i時間複雜度o(n)

求乙個有序陣列中和等於8的下標

int array = ;

int i = 0;

int j = array.length - 1;

while(i < j)else if(array[i] + array[j] > 8)else

}

時間複雜度o(n)

兩個有序數組合並且去重合成新陣列

int a = ;

int b = ;

int c = new int[a.length+b.length];

int i = 0; int j = 0; int k = 0;

while(i < a.length && j < b.length)else if(a[i] == b[j])else

}while(i < a.length)

while(j < b.length)

for(int m = 0; m時間複雜度o(n)

快速排序

int array = ;

sortcore(array, 0, array.length -1);

private static void sortcore(int array, int startindex, int endindex)

int boundray = boundray(array, startindex, endindex);

sortcore(array, startindex, boundray - 1);

sortcore(array, boundray + 1, endindex);

}private static int boundray(int array, int startindex, int endindex)

array[leftindex] = array[rightindex];

while(leftindex < rightindex && array[leftindex] <= standard)

array[rightindex] = array[leftindex];

}array[leftindex] = standard;

return leftindex;

}

演算法之雙指標法(一)

雙指標法在很多場景及演算法中都有使用 主要應用的演算法題如下 乙個陣列中有奇數也有偶數,將所有奇數放到陣列左邊,將所有偶數放到陣列右邊 int array int i 0 int j array.lentgh 1 while i j while iarray j 0x1 0 if i j 時間複雜度...

演算法思維 雙指標法

雙指標可分為三類 其中,滑動視窗 已單獨寫了一篇隨筆,可跳轉檢視。在快慢指標中,又有一類典型演算法,叫 floyd s cycle finding algorithm,其又名floyd s hare and tortoise algorithm。在這裡,我們主要談論左右指標和快慢指標。左右指標 主要...

雙指標法LeetCode總結

遍歷物件的過程中,使用兩個指標進行操作,實現相應的目的 經典環形鍊錶 leetcode142 待補充適用於有序陣列,設定陣列左索引與陣列右索引 基本流程是 publicf int nums leetcode11 盛水最多的容器 class solution return max leetcode15...