Saturday, February 13, 2016

Algorithms in a Nutshell



Algorithms in a Nutshell
Principle: Know Your Data
Dijkstra’s Algorithm will run forever if a cycle exists whose sum of all edge weights is negative.

Choose the most appropriate algorithm based upon your data as you become more familiar with the available options.

Principle: Decompose the Problem into Smaller Problems
Convex Hull Scan produces the final convex hull by constructing and merging together two partial hulls (the upper and lower).

Principle: Choose the Right Data Structure
a binary heap offers no ability to determine whether it contains a specific element.
Line Sweep can provide only O(n log n) performance because it uses an augmented binary tree to implement the priority queue and still provides O(log n) performance for removing the minimum element.

Principle: Make the Space versus Time Trade-off
Many of the computations carried out by the algorithms are optimized by storing information that reflects the results of past computations.

Principle: If No Solution Is Evident, Construct a Search

Principle: If No Solution Is Evident, Reduce Your Problem to Another Problem That Has a Solution
Principle: Accept Approximate Solution When Possible
The Knapsack unbounded problem provides such a scenario, since the approximation is no worse than 50% of the actual result.

Principle: Add Parallelism to Increase Performance

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts