leetcode初級演算法 排序和搜尋總結

2021-08-30 17:28:56 字數 1569 閱讀 4317

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

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

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

示例:輸入:

nums1 = [1,2,3,0,0,0], m = 3

nums2 = [2,5,6], n = 3

輸出: [1,2,2,3,5,6]

c++**:

方法一:建立乙個額外的空間nums,每次比較nums1和nums2的大小,取大的放到nums中。最後再將nums拷貝到nums1中。

class solution 

//其中乙個先到頭,有剩餘

while

(inums[k++

]=nums1[i++];

while

(jnums[k++

]=nums2[j++];

copy

(nums,nums+m+n,nums1.

begin()

);}}

;

方法二:

nums1和nums2從後開始比較,取二者大的值放到nums1的尾部。如果nums2先到頭就結束了,如果nums1先到頭,就把nums2剩下的都放到nums1中

class solution 

else

}while

(j>=0)

}};

你是產品經理,目前正在帶領乙個團隊開發新的產品。不幸的是,你的產品的最新版本沒有通過質量檢測。由於每個版本都是基於之前的版本開發的,所以錯誤的版本之後的所有版本都是錯的。

假設你有 n 個版本 [1, 2, …, n],你想找出導致之後所有版本出錯的第乙個錯誤的版本。

你可以通過呼叫 bool isbadversion(version) 介面來判斷版本號 version 是否在單元測試中出錯。實現乙個函式來查詢第乙個錯誤的版本。你應該儘量減少對呼叫 api 的次數。

示例:給定 n = 5,並且 version = 4 是第乙個錯誤的版本。

呼叫 isbadversion(3) -> false

呼叫 isbadversion(5) -> true

呼叫 isbadversion(4) -> true

所以,4 是第乙個錯誤的版本。

c++**

思路:二分法查詢的變體,找到第乙個錯誤的版本。

如果mid是正確的,那麼錯誤的肯定在後半部分,即low=mid+1

如果mid是錯誤的,那麼需要判斷mid是不是第乙個錯誤的版本,如果mid的前乙個是正確或者mid就是第乙個,那麼mid就是第乙個錯誤的版本。否則說明要找的在mid前邊,那麼high=low-1

// forward declaration of isbadversion api.

bool isbadversion

(int version)

;class solution }}

};

Leetcode初級演算法

不是很難的一道動態規劃的題,感覺做多了就記住了。class solution return dp n 此題想法就是,只要後面買的減去前面買的能大於0,就算在內,每次買完和max比較,大於max就記錄為max,如果買的sum小於0了,重新開始買,sum記為0 class solution if sum...

初級排序演算法

回顧之前學習的各種排序演算法,從初級到高階,包括選擇排序,氣泡排序,插入排序,希爾排序,快速排序,歸併排序,堆排序等等,持續更新中 注 這裡實現的演算法都是遞增排序,也就是從小到大排序。思想 首先,找到陣列中最小的那個元素,其次,將它和陣列的第乙個元素交換位置 如果第乙個元素就是最小元素那麼它就和自...

初級排序演算法

排序模板 public class example private static boolean less comparable v,comparable w private static void exch comparable a,int i,int j private static void ...