Competitive programmers are known for their problem solving skills. They show their skills by making different projects, taking part in different coding challenges and many more.
How do I become a competitive programmer?
- Pick a language.
When picking a programming language ask yourself these questions:
i. What is it that made you interested in programming?
ii. What do you want to do as a programmer?
The answers will navigate your steps and your programming career. And your answers might affect the technical stack that interests you. A front-end developer works on user-facing code, which involves learning JavaScript. A back-end developer works with the server, database, and application which may involve languages like Ruby or Python.
- Learn Data Structures
i. Beginner:
Array
Linked List
Stack
Queue
Tree
ii. Intermediate
Heap
Priority Queue
Huffman Tree
Union Find
Tries
Hash Table
TreeMap
iii. Proficient
Segment Tree
Binary Indexed Tree
Suffix Array
Sparse Table
LCA
Range Tree
iv. Expert
Suffix Automation
Suffix Tree
Heavy-Light Decomposition
Treap
Splay Tree
Dynamic Suffix Array
Palindromic Tree
- Algorithms
i. Introduction
Computer Algo
Big O Notation
Recurrence Basics
Divide & Conquer
Pseudocode Basics
ii. Graphs.
Graph
Basic Terminology
Directed Graphs
Representation
Depth-first search
Weighed Graph
Topological sort
Connectivity of graph
Spanning Tree
iii. Search Algo
Linear Search
Binary search
Jump search
iv. String Algo
String basics
Searching Tech
Hamming Dist
Suffix tree
String Hashing
Rabin-Karp Algo
v. Sorting Algo
Insertion sort
Merge sort
Bubble sort
Counting sort
Quick sort
Selection sort
vi. Dynamic Prog.
Basics
Edit distance
Edit distance Alignment
vii. Hashing
- Hash table and collisions.
viii. Trees
Tree and binary heap.
Binary search tree
Tree traversals
ix. Linear structure
Singly linked list
Doubly linked list
Fixed-sized array
Dynamic array
- Resources
- YouTube:
i. Neso Academy
ii. Simple Snippets.
iii. Freecodecamp
- Websites:
i. Geeks for Geeks.
ii. W3schools.
iii. Javatpoint.
- Practice Websites
Hackerrank
Exercism
TopCoder
CodeWars
CodeChef
SPOJ
Just some few tips.
Understand logic properly, build logics, understand the code and flow, write code and paper while practicing and don't copy the code.