經典演算法問題之指標碰撞系列

2021-08-20 12:52:11 字數 2092 閱讀 8162

注釋(q:question、a:answer、c:code)

q(1):陣列裡面只有0,1,2,排成順序的陣列

a:最簡單的方法是遍歷(簡單到不敢相信,當然這不是最好的方法);

三路快排的方法。

c:

/**三路快排

* 陣列裡面有3種數字,0,1,2

* 排成順序

* 時間複雜度 o(n)

* 空間為 o(1)

*/public

static

void

threeway(int array)

else

if(array[i] == 2)

else

}for(int a:array)

system.out.print(a+" ");

system.out.println();

}public

static

void

swap(int array,int i,int j)

以下是在leetcode上面做過的題,給出題號和解答

/**ques:88

* 給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。

說明:

初始化 nums1 和 nums2 的元素數量分別為 m 和 n。

你可以假設 nums1 有足夠的空間(空間大小大於或等於 m + n)來儲存 nums2 中的元素。

思考: 有序陣列,nums空間足夠大,通過在末尾進行比較,填值,減小了開銷。

時間複雜度:o(n)

空間複雜度 o(m),沒有額外的空間開銷

*/ public void merge(int nums1, int m, int nums2, int n)

}while(i>=0)

while(j>=0)

system.out.println("[");

int k;

for(k = 0;k< nums1.length-1 ;k++)

system.out.println(nums1[k]+"]");

}/**

* question:215. 陣列中的第k個最大元素

* 描述:在未排序的陣列中找到第 k 個最大的元素。

* 請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。

* */

public static int findkthlargest(int nums, int k)

public static int findkthlargest(int nums,int low,int high, int k)

public static int quickpanition(int nums,int low,int high)

else

return false;

}else

return false;}}

return true;

}public static int ischarordigit(char c)

/** *question:344 請編寫乙個函式,其功能是將輸入的字串反轉過來。

*/public string reversestring(string s)

return string.valueof(array);

}/**

* question:345 反轉字串中的母音字母

*/public string reversevowels(string s)

}return string.valueof(array);

}public boolean isvowels(char c)

public void swap(char array,int i,int j)

/** * question:11 盛最多水的容器

*/public static int maxarea(int height)

if(lz < hz)

low++;

else

high--;

}return area;

}

經典問題之HashMap碰撞問題

資料結構中有陣列和鍊錶來實現對資料的儲存,但這兩者基本上是兩個極端。陣列儲存區間是連續的,占用記憶體嚴重,故空間複雜的很大。但陣列的二分查詢時間複雜度小,為o 1 陣列的特點是 定址容易,插入和刪除困難 鍊錶儲存區間離散,占用記憶體比較寬鬆,故空間複雜度很小,但時間複雜度很大,達o n 鍊錶的特點是...

經典演算法系列之 遞迴

1 前言 演算法,在計算機中的地位,就相當於人類大腦的決策中樞系統,哪怕最簡單的演算法,其精妙的思維方式,都可以讓人開啟一扇新的視窗。演算法,它不僅僅只是狹義的用來解決電腦科學領域的問題,更是一種 思維方式 演算法思維,是一種深度思考和創造的過程。演算法,只有真正理解了,而不只是所謂的知道,並將應用...

經典演算法系列之 選擇排序

1 前言 演算法,在計算機中的地位,就相當於人類大腦的決策中樞系統,哪怕最簡單的演算法,其精妙的思維方式,都可以讓人開啟一扇新的視窗。演算法,它不僅僅只是狹義的用來解決電腦科學領域的問題,更是一種 思維方式 演算法思維,是一種深度思考和創造的過程。演算法,只有真正理解了,而不只是所謂的知道,並將應用...