php算法在线刷题,c,算法_每日一道算法:leetcode 刷题碰到的问题。,c,算法 - phpStudy...
每日一道算法:leetcode 刷題碰到的問題。
這是題目:
Given an unsorted array nums, reorder it such that nums[0] < nums[1] >nums[2] < nums[3]....
Example: (1) Given nums = [1, 5, 1, 1, 6, 4], one possible answer is
[1, 4, 1, 5, 1, 6]. (2) Given nums = [1, 3, 2, 2, 3, 1], one possible
answer is [2, 3, 1, 3, 1, 2].
Note: You may assume all input has valid answer.
Follow Up: Can you do it in O(n) time and/or in-place with O(1) extraspace?
我的思路比較簡單雖然通過了但是用了1081ms所以其實無論是時間復雜度還是空間復雜度都達不到要求,希望各位誰感興趣的話試著用C做一下。下面是我的代碼,如果有大神能幫我想到改進的方法也可以啊。(大體上是先快排之后然后再把后面一半的數插入前面一半的數):
void quicksort(int *nums, int numsSize);
void wiggleSort(int *nums, int numsSize){
quicksort(nums, numsSize);
int counter = 0;
int left = (numsSize - 1) / 2;
int right = numsSize - 1;
int cache[numsSize];
for(counter=1; counter <= numsSize; counter++){
if((counter & 1) == 1){
cache[counter - 1] = nums[left--];
}
else{
cache[counter - 1] = nums[right--];
}
}
for(counter=0; counter
nums[counter] = cache[counter];
}
}
void quicksort(int *nums, int numsSize){
if(numsSize <= 1){
return;
}
int left = 0;
int right = numsSize - 1;
int key = nums[left];
while(left < right){
while(nums[right] >= key && left < right){
right--;
}
nums[left] = nums[right];
while(left < right && nums[left] <= key){
left++;
}
nums[right] = nums[left];
}
nums[left] = key;
quicksort(nums, left);
quicksort(nums+left+1, numsSize - 1 - left);
}
另外在網上看到有些人的思路是先找出中指點(據說只需要O(n)的時間復雜度,我不知道為什么只要O(n)的時間復雜度就能找到中指點,希望有知道的大神順便也幫我解釋一下)。
相關閱讀:
MSSQL如何用腳本導出創建表結構的腳本?
elasticsearch能作為主數據庫使用嗎?
android中mvc架構問題
ThinkPHP 怎么獲取前臺JS動態生成的js數組
github上pull request時出現的問題。
view 里面的 view 怎么設置frame
css可以設置圖片以最短邊為依據展示在父級中嗎?
針對密碼泄漏事件,都有哪些相對安全的密碼加密規則?
PS 如何在一張圖中截出同樣大小的圓
PHP paypal ipn 返回 INVALID,但是 payment_status=Completed,這是為什么呢?
iptables的nat表中 -j redirect 與-dnat --to-destnation的區別。
Github中Gist的embed和raw功能是如何實現的?
gitbook上寫好的書怎么導入github中
simple_html_dom執行出現死循環如何解決?
網易云音樂的通訊加密方式是什么?
請問在一個多層的JAVA企業項目中,大家是如何設計統一異常處理的?
moment日期比較
想用Java實現客戶端的智能聯想提示,應該選擇Lucene之類的全文檢索還是選擇客戶端緩存?
php pdo 缺省錯誤模式 和 例外模式,差不多,為什么弄兩個?
如何在Ubuntu上安裝內核對應的源碼來編譯驅動?
總結
以上是生活随笔為你收集整理的php算法在线刷题,c,算法_每日一道算法:leetcode 刷题碰到的问题。,c,算法 - phpStudy...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java keypad game,Tak
- 下一篇: java开发爱恩斯坦棋,爱恩斯坦棋计算机