之前遇到的一道算法題,這里記錄一下。 算法思想:因為是有序的,所以我們用s存放第一個元素的下標,用e存放最后一個元素的下標,那么arr s 就是所有元素中最小的,arr e 就是所有元素中最大的,所以我們判斷arr s arr e sum的值是否大於 ,如果大於 那就說明 arr e 太大了,那么就e 。如果小於 ,arr s 太小了,那就s 。這個時候判斷是否距離比上一個我們記錄的距離更小,更小 ...
2020-09-17 16:31 0 492 推薦指數:
題目: 給定一個未排序的整數數組,找出最長連續序列的長度。 要求算法的時間復雜度為 O(n)。 思路: 要求的時間復雜度為O(n),則只允許一次循環。 程序: class Solution: def longestConsecutive ...
面試題: 怎樣把兩個有序數組合並成有序數組呢 邏輯步驟: 1.假設兩個數組為A和B 2.A和B都是從小到大的順序進行排列 ** 1.我們可以直接比較兩個數組的首元素,哪個小就把這個小元素放入可變數組。 2.把小元素所在的數組中的這個元素刪除。 3.繼續比較兩個數組中的首 ...
先討論出現次數大於n/2的數字,如果這樣的數字存在,那么這個數出現的次數大於其他數出現的次數的總和。 在數組A中,我們定義兩個數據集合a1,a2。a1為出現次數大於n/2的數的集合,a2為其余數組成的集合。對於數組 A中元素a、b,假設a不等於b,那么有兩種情況,分別為:a屬於a1,b屬於 ...
有兩個數組a,b,大小都為n,數組元素的值任意整形數,無序; 要求:通過交換a,b中的元素,使數組a元素的和與數組b元素的和之間的差最小。 當前數組a和數組b的和之差為 A = sum(a) - sum(b) a的第i個元素和b的第j個元素交換后,a和b的和之差 ...
題目: 給定一個按照升序排列的整數數組 nums,和一個目標值 target。找出給定目標值在數組中的開始位置和結束位置。 你的算法時間復雜度必須是 O(log n) 級別。 如果數組中不存在目標值,返回 [-1, -1]。 思路:二分法,使用一個指針來找到數字的開頭和結尾位置 ...
時間復雜度是一個函數,它定量描述了該算法的運行時間。 常見的時間復雜度有以下幾種。 1,log(2)n,n,n log(2)n ,n的平方,n的三次方,2的n次方,n! 1指的是常數。即,無論算法的輸入n是多大,都不會影響到算法的運行時間。這種是最優的算法。而n!(階乘)是非常差的算法。當n ...