What's better for competitive programming, is it Java, Python, or JavaScript?
Which language is better for competitive coding? - general - CodeChef Discuss
Is using Java as effective as using C++ in Competitive Programming?
What are your views on C++ vs Python (vs Java also if you use it) for LeetCode and competitive programming?
Videos
I see this being asked too many times that what is the best language for leetcode and cp. So, I want you to document here your views about which one to prefer and why. I would appreciate views of those people who have good experience with both C++ and Python (or maybe Java) but still prefer one because of some reason. I want you to state those reasons.
This is not about superiority of languages, but only about being suitable to the task at hand.
For me, I mostly use C++ and my reasons are:
-
Speed obviously. Many times even sub-optimal solution passes the test cases.
-
Rich set of data structures such as
unordered_map(HashMap),unordered_set(HashSet),map(TreeMap),set(TreeSet),stack,queue,dequeetc, almost anything you can imagine. -
A truck load of algorithms - I know python has very good stuff in
itertoolsandfunctoolsbut C++'s#include<algorithm>is just another beast. Many leetcode problems become one liner that is readable and can be used even in production code (actually it should be used in production code). Need nth largest or smallest element -std::nth_element, need to merge two sorted ranges -std::merge, need to rotate the array by kth places-std::rotate, want to partition the array -std::partition, want to partition but the initial order is also important -std::stable_partition, want to sort but initial order is also important -std::stable_sort, that's just scratching the surface. -
Tail recursion elimination - I can write recursive implementation which is easier to reason about and the compiler will turn it into iterative one for me. SegmentTree and Trie becomes a joke using recursion. Sometimes it really matters, in this weekly contest (Leetcode 311) I solved 4th problem using recursive Trie solution, since I finished before time so thought that I should try it in Python also for practice but I could not get it to accept until I converted everything to iterative.
-
std::string_view- It makes recursive solutions involving strings really easy - you don't need to copy string so there's no memory penalty and performance penalty. C++20 also hasstd::spanwhich brings the same ease also tovectorandarray.
I do come to python for some problems for which my reasons mostly are
-
DP problems become a joke using
lru_cacheandcache, actually most of the DP problems I first solve in python, because I can write it like that the maths formula, which helps me figure out what values I need to store in DP table. -
The ease of putting anything (constant data structures) into
setormapis very convenient as opposed to writing the hash function forstd::unordered_mapandstd::unordered_set. -
Arbitrary precision numbers, for problems involving huge numbers there's no better solution that using Python.
Also give response in the poll about which one you use.
I know these languages are odd choices (especially JS) because the most common one to use is C++. I picked those 3 languages because they're the one I'm most comfortable with. For whatever reasons, I don't feel like I like C++ so I cross it out.
So, out of those 3 languages, which one is better for CP? I don't really intend to join a contest tho. This is mainly for job interview and grinding Hackerrank, Lettcode, and Codeforces.
I am learning Data Structures using Java. I already know some programming and want to improve my programming logic by starting with CP.
Can I do competitive programming in Java effectively? I have read that most CP programmers use C++.