雙指標法在很多場景及演算法中都有使用
主要應用的演算法題如下:
乙個陣列中有奇數也有偶數,將所有奇數放到陣列左邊,將所有偶數放到陣列右邊
int array = ;
int i = 0;
int j = array.lentgh - 1;
while (i < j)
while(iarray[j] & 0x1 == 0)
if(i < j)
}
時間複雜度o(n)
乙個陣列中既有奇數也有偶數,奇數的下標是奇數,偶數的下標是偶數
int array = ;
int even = 0; //偶數
int odd = 1; //奇數
int end = array.length - 1;
while(even <= end && odd <= end)else
}for(int i =0; iprivate
static
void swap(int array, int a, int b)
時間複雜度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[m]; 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 int even 0 偶數 int odd 1 奇數 int en...
演算法思維 雙指標法
雙指標可分為三類 其中,滑動視窗 已單獨寫了一篇隨筆,可跳轉檢視。在快慢指標中,又有一類典型演算法,叫 floyd s cycle finding algorithm,其又名floyd s hare and tortoise algorithm。在這裡,我們主要談論左右指標和快慢指標。左右指標 主要...
雙指標法LeetCode總結
遍歷物件的過程中,使用兩個指標進行操作,實現相應的目的 經典環形鍊錶 leetcode142 待補充適用於有序陣列,設定陣列左索引與陣列右索引 基本流程是 publicf int nums leetcode11 盛水最多的容器 class solution return max leetcode15...