演算法總結與思考(一)

2021-08-08 16:40:44 字數 1035 閱讀 7178

先看乙個問題:給定乙個陣列和乙個值,刪除該值的所有指定值並返回新長度。例如:有陣列(3,2,2,3,4,5,3),刪除陣列中所有的2,返回刪除後陣列的長度。詳情見leetcode27號問題。

解決思路:定義k=0為新陣列長度,遍歷陣列所有值判斷如果與指定值不相等,則將值賦給陣列num[k],並且k++。js**如下:

var removeelement = function

(nums, val)

}console.log(nums);

return k;

};var arr = new

array(3,2,2,3,4,5,3);

console.log(removeelement(arr,2));

注意,這裡的陣列原長度並沒有變,所以要想得到想要的陣列必須刪除k後面的陣列元素值。

這是乙個比較簡單的演算法思路,同樣的適合其他題。

例如283號,題目如下:給定乙個陣列,講陣列中所有0移到末尾,其他元素相對位置不變。思路是一樣的。我在這裡就不提供**了。

例如26號問題,題目如下:給定乙個已排序陣列,刪除重複的位置,使每個元素只出現一次,並返回新的長度。思路也是一樣的。我在這裡就不提供**了。

接下來我要講的是26號問題高階版本80號問題:給定乙個已排序陣列,刪除重複的位置,使每個元素最多保留兩個,並返回新的長度。例如(1,1,2,2,2,3),返回5且陣列前5個元素為(1,1,2,2,3)

var removeduplicates = function

(nums) else

if(nums[i] != nums[k])

}console.log(returncount);

console.log(nums);

return returncount;

};var arr = new

array(1,2,2,2,2,3,3);

removeduplicates(arr);

當然啦,這只是我的思路,如果還有更好的優化方案,大家可以嘗試。

排序演算法 總結 思考(二)

寫排序演算法總是計算機招聘筆試面試必考,也最檢驗考基礎能力的題 續前一篇介紹其他四種排序演算法 5.輪輪選拔 氣泡排序 bubble sort 氣泡排序也是原理比較好懂,但是實現效率不高的排序方法之一,比較適合初學者熟悉理解演算法的過程 冒泡 本身就是乙個很形象的比喻。在此排序演算法中,每一輪會前後...

《演算法導論》筆記 第15章 總結與思考

歐幾里得旅行商問題是對平面上給定的n個點,確定一條連線各點的最短閉合旅程的問題。這個解的一般形式為np完全的。j.l.bentley 建議通過只考慮雙調旅程 bitonictour 來簡化問題,這種旅程即為從最左點開始,嚴格地從左到右直至最右點,然後嚴格地從右到左直至出發點。在這種情況下,多項式時間...

《演算法導論》筆記 第22章 總結與思考

a g 的根是g的掛接點,當且僅當在g 中該根頂點至少有兩個子女。b 設v是g 中的某一非根頂點,證明v是g的掛接點當且僅當v有乙個子頂點s,使得不存在從s或s的任何後裔頂點指向v的某個真祖先頂點的反向邊。c 設low v min d v d w d w 對v的後裔u,u,w 是反向邊 試說明對所有...