Ds and Algo

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

You need to have a good grasp of how to analyze the time complexity and space co

mplexity of code. This is a very important skill as it provides you with a yards
tick to compare one algorithm to another algorithm. Any basic course in data str
uctures or algorithms will have heavy emphasis on this (if they do not have then
I would think that the school's computer science programme is not good). You ca
n try reading Introduction to Algorithms, but I am not sure whether you will be
motivated enough sufficiently to read it entirely.
The next step is to equip yourself with commonly used data structures and common
ideas to solve a problem and algorithms. Data structures like stack, queue, lin
ked list, skiplist, hashtables, bloom filters, trees, binary search trees, balan
ced binary search trees, priority queues, union find, trie, suffix array, suffix
trees, segment trees/interval trees, fenwick trees and so on. Concepts that yo
u should experiment with: binary search (and ternary search, depending on circum
stances) greedy, dynamic programming (Longest increasing subsequence, edit dista
nce etc etc), complete search, heurstics search and so on. Algorithms you should
know are like quicksort, mergesort, DFS, BFS, Dijkstra, Prims', Kruskal, bipart
ite matching, maximum flow stuff, graham scan, jarvis march and so on. I probabl
y left out a lot of things but I guess the names here should get you started.
Practice. Alex Levin provided some resources to try algorithmic problems. To add
to the list, you can try SPOJ, codeforces, codechef, uva online judge, and so o
n. Try searching for the archive of ACM ICPC regionals and world final problems
too.You need to have a good grasp of how to analyze the time complexity and spac
e complexity of code. This is a very important skill as it provides you with a y
ardstick to compare one algorithm to another algorithm. Any basic course in data
structures or algorithms will have heavy emphasis on this (if they do not have
then I would think that the school's computer science programme is not good). Yo
u can try reading Introduction to Algorithms, but I am not sure whether you will
be motivated enough sufficiently to read it entirely.
The next step is to equip yourself with commonly used data structures and common
ideas to solve a problem and algorithms. Data structures like stack, queue, lin
ked list, skiplist, hashtables, bloom filters, trees, binary search trees, balan
ced binary search trees, priority queues, union find, trie, suffix array, suffix
trees, segment trees/interval trees, fenwick trees and so on. Concepts that yo
u should experiment with: binary search (and ternary search, depending on circum
stances) greedy, dynamic programming (Longest increasing subsequence, edit dista
nce etc etc), complete search, heurstics search and so on. Algorithms you should
know are like quicksort, mergesort, DFS, BFS, Dijkstra, Prims', Kruskal, bipart
ite matching, maximum flow stuff, graham scan, jarvis march and so on. I probabl
y left out a lot of things but I guess the names here should get you started.
Practice. Alex Levin provided some resources to try algorithmic problems. To add
to the list, you can try SPOJ, codeforces, codechef, uva online judge, and so o
n. Try searching for the archive of ACM ICPC regionals and world final problems
too.You need to have a good grasp of how to analyze the time complexity and spac
e complexity of code. This is a very important skill as it provides you with a y
ardstick to compare one algorithm to another algorithm. Any basic course in data
structures or algorithms will have heavy emphasis on this (if they do not have
then I would think that the school's computer science programme is not good). Yo
u can try reading Introduction to Algorithms, but I am not sure whether you will
be motivated enough sufficiently to read it entirely.
The next step is to equip yourself with commonly used data structures and common
ideas to solve a problem and algorithms. Data structures like stack, queue, lin
ked list, skiplist, hashtables, bloom filters, trees, binary search trees, balan
ced binary search trees, priority queues, union find, trie, suffix array, suffix
trees, segment trees/interval trees, fenwick trees and so on. Concepts that yo
u should experiment with: binary search (and ternary search, depending on circum
stances) greedy, dynamic programming (Longest increasing subsequence, edit dista
nce etc etc), complete search, heurstics search and so on. Algorithms you should
know are like quicksort, mergesort, DFS, BFS, Dijkstra, Prims', Kruskal, bipart
ite matching, maximum flow stuff, graham scan, jarvis march and so on. I probabl
y left out a lot of things but I guess the names here should get you started.

Practice. Alex Levin provided some resources to try algorithmic problems. To add
to the list, you can try SPOJ, codeforces, codechef, uva online judge, and so o
n. Try searching for the archive of ACM ICPC regionals and world final problems
too.You need to have a good grasp of how to analyze the time complexity and spac
e complexity of code. This is a very important skill as it provides you with a y
ardstick to compare one algorithm to another algorithm. Any basic course in data
structures or algorithms will have heavy emphasis on this (if they do not have
then I would think that the school's computer science programme is not good). Yo
u can try reading Introduction to Algorithms, but I am not sure whether you will
be motivated enough sufficiently to read it entirely.
The next step is to equip yourself with commonly used data structures and common
ideas to solve a problem and algorithms. Data structures like stack, queue, lin
ked list, skiplist, hashtables, bloom filters, trees, binary search trees, balan
ced binary search trees, priority queues, union find, trie, suffix array, suffix
trees, segment trees/interval trees, fenwick trees and so on. Concepts that yo
u should experiment with: binary search (and ternary search, depending on circum
stances) greedy, dynamic programming (Longest increasing subsequence, edit dista
nce etc etc), complete search, heurstics search and so on. Algorithms you should
know are like quicksort, mergesort, DFS, BFS, Dijkstra, Prims', Kruskal, bipart
ite matching, maximum flow stuff, graham scan, jarvis march and so on. I probabl
y left out a lot of things but I guess the names here should get you started.
Practice. Alex Levin provided some resources to try algorithmic problems. To add
to the list, you can try SPOJ, codeforces, codechef, uva online judge, and so o
n. Try searching for the archive of ACM ICPC regionals and world final problems
too.

You might also like