給定兩個有序整數陣列 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 ...