2017.9.14
昨天做了一整天的題。。。。。。
首先使用了氣泡排序,我知道會超時。但還是做了一遍,心想複習一下舊的知識也是極好的。於是,果然超時了。但是毫不氣餒。
想,要不用快速排序試一試。但是自作聰明的以為這題一定是在考堆排序。
然而堆排序是我最不會的排序方式,但還是下定決心開始學習。
好不容易學會了之後,果然超時,而且絲毫顯示不出相對於氣泡排序的優點。
我心裡想著,一定是我採用的結構不對。不用樹的結構了,用陣列的結構。
一通忙活之後,果然還是超時。我真的是就不淡定了。
但是窮則思變。
最後的最後,我說要不還是試一試牛乎乎的快排吧。
卻弱智的發現,我連快排的方法都記得有些模糊了。
遞迴呼叫的時候,引數也出現了一些失誤。真的是要被這個心裡覺得很簡單的題虐慘了。
不過今天早晨一來實驗室,用了2分鐘,結果就出來了。還是非常開心的呢。
class solution
int low = 0;
int height = nums.length-1;
int flag = quicksort(nums,low,height);
k = nums.length - k + 1;
while(flag != k-1)
else
}return nums[k-1];
}public static int quicksort(int nums,int low,int height)
nums[height] = nums[low];
height--;
while(low < height && nums[height] > tmp)
nums[low] = nums[height];
}nums[low] = tmp;
return low;
}};
5 第k大元素
題目描述 在陣列中找到第k大的元素 樣例 給出陣列 9,3,2,4,8 第三大的元素是 4 給出陣列 1,2,3,4,5 第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此類推 挑戰 要求時間複雜度為o n 空間複雜度為o 1 注意事項 你可以交換陣列中的元素的位置 1.使用選擇排序進...
第k大元素
在陣列中找到第k大的元素 最先想到的是簡單排序,但是簡單排序超時,於是想到改造快排,快排的思想是每次確定乙個元素在陣列中的下標,如果確定的下標為k那該元素為k大,若下標大於k,第k大在改下標之前.class solution public int pat int nums,int start,int...
第K大元素
在陣列中找到第k大的元素。給出陣列 9,3,2,4,8 第三大的元素是4 給出陣列 1,2,3,4,5 第一大的元素是5,第二大的元素是4,第三大的元素是3,以此類推 要求時間複雜度為o n 空間複雜度為o 1 如果不考慮時間複雜度和空間複雜度,這道題目有很多種方法,利用一種排序演算法將陣列倒敘排序...