数据结构与算法
文章平均质量分 52
ZJ_Frank
这个作者很懒,什么都没留下…
展开
-
小于n的质数数量 --- 埃氏筛 (Eratosthenes)
问题给定一个整数 n,请你找到小于等于它的所有质数数目。下面给出几种不同复杂度的解法,难度依次递增。最出彩的是第三种该算法,由希腊数学家厄拉多塞(Eratosthenes)提出,称为厄拉多塞筛法,简称埃氏筛,可以在接近线性时间内解决问题。Brutal Force O(n2)O(n^2)O(n2)def primeNumbers(n): cnt = 0 for i in range(1, n+1): if isPrime(i): cnt += 1 return cnt def is原创 2021-08-02 19:54:52 · 363 阅读 · 0 评论 -
Dijkstra algorithm - implemented using priority_queue
经典图论算法。用于计算两点之间的最短距离。也可以用于计算某一点 (source)到其他所有点的最短距离。伪代码Dijstra (graph, n, src) initialize dist := [...inf...] with dist[src] = 0 initialize priority queue pq; add (0, src) to pq while pq is not emtpy u = pq.top()[1] pq.pop() for neighbor, wei原创 2021-08-02 10:34:34 · 284 阅读 · 0 评论 -
Fisher-Yates Shuffle Algorithm
今天我们介绍一种 Shuffle算法,它保证了对数组shuffle后,任何一个元素出现在数组中任何一个位置的概率是相等的。并且这个算法复杂度为 O(n)算法以及实现对于一个需要 Shuffle的数组 A,其长度为 n。假设我们有这样的一个函数 rand(0, n),它可以均匀地生成 [0,…,n]之间的随机整数。Fisher-Yates Shuffle Algorithm 这样给出解决方案:Let k = n-1, (A is 0-indexed)start from node k, swa原创 2021-07-28 22:25:24 · 262 阅读 · 0 评论 -
谈谈quick Sort: 两种实现方法(额外空间与 in-place)
快排是一个很经典的排序算法了,虽然它的 worst case 复杂度是 O(n2)O(n^2)O(n2),但是一般而言它的平均复杂度为O(nlogn)O(n\log n)O(nlogn),并且在实际中常常是最快的排序算法。而它可以有两种版本可以实现:额外空间开销或者原地算法。一般我们提到的快排都是原地算法,而其实现难度也更高。In Placedef inPlaceQuickSort(nums, start, end): if end - start <= 1: return p = p原创 2021-05-30 23:11:49 · 831 阅读 · 1 评论 -
ML(1) Linear Regression
IntroductionLinear regression is perhaps the most fundamental algorithm in machine learning. In this setting, given a dataset D={(xi,yi)∣xi∈Rn,yi∈R}i=1mD=\{(x^i,y^i)|x^i\in \mathbb{R}^n, y^i\in\mathbb{R} \}_{i=1}^mD={(xi,yi)∣xi∈Rn,yi∈R}i=1m (x is featur原创 2021-03-02 16:49:28 · 164 阅读 · 0 评论 -
摩尔投票法
问题描述给定一个长度为n的数组,请找出其中出现次数大于 n/2的元素(假设一定存在)解决这个问题本身并不困难,大不了建个字典就行。麻烦的是如何在一次遍历、使用O(1)空间解决?这就引出了摩尔投票法。摩尔投票法伪代码如下:Given A of length n;function findMajorElement(A: array of length n): int cnt = 0, major = -1; for i in A: if cnt == 0: major = i原创 2021-01-14 10:05:36 · 128 阅读 · 0 评论 -
Data Structure Lecture Note (Week 7, Lecture 20)
(Finally) The end of the course!(2, 4) treeMulti-way search tree:an ordered tree such that:each interval node has at least two children and stores d-1 key-element items ki,oik_i, o_iki,oi, where ddd is the number of childrenfor a node with children原创 2020-07-27 11:01:58 · 111 阅读 · 0 评论 -
Data Structure Lecture Note (Week 7, Lecture 19)
Advanced ADT:BBST: AVL, red-black, B tree, B+ treeHashing: unordered dictionary"In an interview, always ask CAN I USE HASH? "In C++, hashing table is implemented as std::unordered_mapIn Python, … is dict()How to implementKeys: an abstract object, we原创 2020-07-20 14:02:21 · 104 阅读 · 0 评论 -
Data Structure Lecture Note (Week 6, Lecture 18)
Building blocks problems cont.dYou are given N wooden blocks, each with a weight Wi and a strength Si for each item iPlease find a way to stack the blocks such that the strength of a block should be larger or equal to the sum of the weights above this bl原创 2020-07-16 14:22:40 · 141 阅读 · 0 评论 -
Data Structure Lecture Note (Week 6, Lecture 17)
Some DP problems原创 2020-07-14 14:42:45 · 125 阅读 · 0 评论 -
Data Structure Lecture Note (Week 6, Lecture 16)
Reduction: vertex cover to hitting sethitting set problem: given a set O of objects and a collection C of subsets of O. Whether there is a set of K objects from O such that for each c in C, there is one element from K in c.e.g. O = {1,2,3,4,5} C= {{1,2},原创 2020-07-13 12:35:34 · 167 阅读 · 0 评论 -
Data Structure Lecture Note (Week 5, Lecture 15)
DFS in finding SCCElementary introduction to P, NP, NP-hardnessreduction of problems原创 2020-07-09 15:06:01 · 259 阅读 · 0 评论 -
Data Structure Lecture Note (Week 5, Lecture 14)
Topological SortingSCC (strongly connected components) SCC meta graph原创 2020-07-08 18:38:34 · 233 阅读 · 0 评论 -
Data Structure Lecture Note (Week 5, Lecture 13)
Correctness of Kruskal's algorithmShortest path and matchingDijkstra's algorithmDealing with negative weights in graph原创 2020-07-08 18:34:02 · 160 阅读 · 0 评论 -
Data Structure Lecture Note (Week 4, Lecture 12)
Prim's AlgorithmKrustal's algorithmunion-find ADT原创 2020-07-02 14:13:37 · 167 阅读 · 0 评论 -
Data Structure Lecture Note (Week 4, Lecture 11)
some graph theory原创 2020-06-30 18:14:19 · 408 阅读 · 0 评论 -
Data Structure Lecture Note (Week 4, Lecture 10)
Priority Queue, Heap. Winner Tree, Loser tree原创 2020-06-29 16:16:33 · 143 阅读 · 0 评论 -
双指针的妙用:面试中的脑筋急转弯问题
双指针在一次遍历问题中的妙用原创 2020-06-25 10:36:27 · 246 阅读 · 0 评论 -
蓄水池抽样问题:问题描述,算法与代码,证明
蓄水池抽样问题的讨论和概述。这是一个在大数据时代尤其有用的算法!原创 2020-06-24 15:26:43 · 277 阅读 · 0 评论 -
Data Structure Lecture Note (Week 3, Lecture 8)
Binary Search Tree;Huffman Code原创 2020-06-23 14:25:08 · 274 阅读 · 0 评论 -
Data Structure Lecture Note (Week 3, Lecture 7)
dp for knapsack with O(n) space complexity and O(K n) time complexityData structures: linked list, tree, etc.原创 2020-06-22 14:24:57 · 169 阅读 · 0 评论 -
Data Structure Lecture Note (Week 2, Lecture 6)
Some amortized analysisPotential function methodDP in 2DOptimization problem overview原创 2020-06-20 09:15:05 · 162 阅读 · 0 评论 -
Data Structure Lecture Note (Week 2, Lecture 5)
Stack, Queue. Amortized Analysis原创 2020-06-16 12:28:02 · 226 阅读 · 0 评论 -
Data Structure Lecture Note (Week 2, Lecture 4)
introduce some sorting algorithms: bubble, merge, quick原创 2020-06-15 22:04:58 · 155 阅读 · 0 评论 -
Data Structure Lecture Note (Week 1, Lecture 3)
Intro to Recursions: the Master Theorem; the Paradigm; some Examples原创 2020-06-11 16:20:24 · 123 阅读 · 0 评论 -
Data Structure Lecture Note (Week 1, Lecture 2)
Little-O, Big-O, Omega, Theta notations and some conventions原创 2020-06-09 21:24:45 · 149 阅读 · 0 评论 -
Data Structure Lecture Note (Week 1, Lecture 1)
First lecture, mainly talking about course logistics and some introductions.原创 2020-06-09 21:21:16 · 251 阅读 · 0 评论 -
Union and Find(并查集)
Union-and-Find 数据结构的简单介绍、伪代码与C++实现原创 2020-06-08 14:40:18 · 311 阅读 · 0 评论