diff --git a/.github/workflows/check-style.yml b/.github/workflows/check-style.yml index c57dd2b..16efad5 100644 --- a/.github/workflows/check-style.yml +++ b/.github/workflows/check-style.yml @@ -27,8 +27,8 @@ jobs: pip install -r requirements.txt - name: Examine formatting with black run: | - pip install black - ruff . --check + pip install ruff + ruff check . - name: Examine import ordering with isort run: | pip install isort diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 8493428..019d3b7 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: os: ['ubuntu-latest', 'windows-latest', 'macos-latest'] - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] + python-version: ["3.8", "3.9", "3.10", "3.11"] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 diff --git a/CHANGELOG.md b/CHANGELOG.md index ddc9d93..b41fd7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,16 @@ # Changelog -## 1.2.2 +## 1.3.3 +- Fix issue in querying NeetCode videos +- Remove support for Python 3.7 (Cannot properly test for Mac) +- Add support for Python 3.12 and 3.13 + +## 1.3.2 - Add difficulty - Add color for difficulty in excel - Query more Neetcode videos and update video dictionary -## 1.2.1 +## 1.3.1 - Fixed issue with Neetcode titles including semicolons, resulting in ill-formatted Anki cards ## 1.2.0 diff --git a/leetcode_study_tool/leetcode_to_neetcode.py b/leetcode_study_tool/leetcode_to_neetcode.py index ce884e4..d8222c7 100644 --- a/leetcode_study_tool/leetcode_to_neetcode.py +++ b/leetcode_study_tool/leetcode_to_neetcode.py @@ -103,6 +103,10 @@ "title": "Balanced Binary Tree - Leetcode 110 - Python", "url": "https://youtube.com/watch?v=QfJsau0ItOY", }, + "112": { + "title": "Path Sum - Leetcode 112 - Python", + "url": "https://youtube.com/watch?v=LSKQyOz_P8I", + }, "1129": { "title": "Shortest Path with Alternating Colors - Leetcode 1129 - Python", "url": "https://youtube.com/watch?v=69rcy6lb-HQ", @@ -335,6 +339,10 @@ "title": "Longest Happy String - Leetcode 1405 - Python", "url": "https://youtube.com/watch?v=8u-H6O_XQKE", }, + "1406": { + "title": "Stone Game III - Leetcode 1406 - Python", + "url": "https://youtube.com/watch?v=HsLG5QW9CFQ", + }, "141": { "title": "Linked List Cycle - Floyd's Tortoise and Hare - Leetcode 141 - Python", "url": "https://youtube.com/watch?v=gBTe7lFR3vc", @@ -407,6 +415,10 @@ "title": "Insertion Sort List - Leetcode 147 - Python", "url": "https://youtube.com/watch?v=Kk6mXAzqX3Y", }, + "1470": { + "title": "Shuffle the Array (Constant Space) - Leetcode 1470 - Python", + "url": "https://youtube.com/watch?v=IvIKD_EU8BY", + }, "1472": { "title": "Design Browser History - Leetcode 1472 - Python", "url": "https://youtube.com/watch?v=i1G-kKnBu8k", @@ -463,6 +475,10 @@ "title": "Find Minimum in Rotated Sorted Array - Binary Search - Leetcode 153 - Python", "url": "https://youtube.com/watch?v=nIVW4P8b1VA", }, + "1531": { + "title": "String Compression II - Leetcode 1531 - Python", + "url": "https://youtube.com/watch?v=ISIG3o-Xofg", + }, "1544": { "title": "Make The String Great - Leetcode 1544 - Python", "url": "https://youtube.com/watch?v=10tBWNjzvtw", @@ -515,6 +531,10 @@ "title": "Even Odd Tree - Leetcode 1609 - Python", "url": "https://youtube.com/watch?v=FkNWN1Fj_TY", }, + "1611": { + "title": "Minimum Number of One Bit Operations to Make Integers Zero - Leetcode 1611 - Python", + "url": "https://youtube.com/watch?v=yRI18_MaG7k", + }, "1614": { "title": "Maximum Nesting Depth of the Parentheses - Leetcode 1614 - Python", "url": "https://youtube.com/watch?v=FiQFJvCvWK4", @@ -559,6 +579,10 @@ "title": "Check If Two String Arrays are Equivalent - Leetcode 1662 - Python", "url": "https://youtube.com/watch?v=ejBwc2oE7ck", }, + "1669": { + "title": "Merge in Between Linked Lists - Leetcode 1669 - Python", + "url": "https://youtube.com/watch?v=pI775VutBxg", + }, "167": { "title": "TWO SUM II - Amazon Coding Interview Question - Leetcode 167 - Python", "url": "https://youtube.com/watch?v=cQ1Oz4ckceM", @@ -571,6 +595,14 @@ "title": "Excel Sheet Column Title - Leetcode 168 - Python", "url": "https://youtube.com/watch?v=X_vJDpCCuoA", }, + "1685": { + "title": "Sum of Absolute Differences in a Sorted Array - Leetcode 1685 - Python", + "url": "https://youtube.com/watch?v=3nkc-e66JmA", + }, + "1688": { + "title": "Count of Matches in Tournament - Leetcode 1688 - Python", + "url": "https://youtube.com/watch?v=lslcc0tumpU", + }, "169": { "title": "Majority Element - Leetcode 169 - Python", "url": "https://youtube.com/watch?v=7pnhv842keE", @@ -583,6 +615,10 @@ "title": "Number of Students Unable to Eat Lunch - Leetcode 1700 - Python", "url": "https://youtube.com/watch?v=d_cvtFwnOZg", }, + "1716": { + "title": "Calculate Money in Leetcode Bank - Leetcode 1716 - Python", + "url": "https://youtube.com/watch?v=tKK7gvPCQfs", + }, "1721": { "title": "Swapping Nodes in a Linked List - Leetcode 1721 - Python", "url": "https://youtube.com/watch?v=4LsrgMyQIjQ", @@ -595,6 +631,10 @@ "title": "Binary Search Tree Iterator - Leetcode 173 - Python", "url": "https://youtube.com/watch?v=RXy5RzGF5wo", }, + "1750": { + "title": "Minimum Length of String after Deleting Similar Ends - Leetcode 1750 - Python", + "url": "https://youtube.com/watch?v=318hrWVr_5U", + }, "1758": { "title": "Minimum Changes To Make Alternating Binary String - Leetcode 1758 - Python", "url": "https://youtube.com/watch?v=9vAQdmVU2ds", @@ -607,6 +647,14 @@ "title": "Largest Number - Leetcode 179 - Python", "url": "https://youtube.com/watch?v=WDx6Y4i4xJ8", }, + "1793": { + "title": "Maximum Score of a Good Subarray - Leetcode 1793 - Python", + "url": "https://youtube.com/watch?v=_K7oyQlAjv4", + }, + "1799": { + "title": "Maximize Score after N Operations - Leetcode 1799 - Python", + "url": "https://youtube.com/watch?v=RRQVDqp5RSE", + }, "18": { "title": "4Sum - Leetcode 18 - Python", "url": "https://youtube.com/watch?v=EYeR-_1NRlQ", @@ -707,6 +755,10 @@ "title": "Number of 1 Bits - Leetcode 191 - Python", "url": "https://youtube.com/watch?v=5Km3utixwZs", }, + "1911": { + "title": "Maximum Alternating Subsequence Sum - Dynamic Programming - Leetcode 1911 - Python", + "url": "https://youtube.com/watch?v=4v42XOuU1XA", + }, "1921": { "title": "Eliminate Maximum Number of Monsters - Leetcode 1921 - Weekly Contest 248 - Python", "url": "https://youtube.com/watch?v=6QQRayzOTD4", @@ -855,6 +907,10 @@ "title": "Number of Ways to Divide a Long Corridor - Leetcode 2147 - Python", "url": "https://youtube.com/watch?v=YOTjCd4Eyhc", }, + "2149": { + "title": "Rearrange Array Elements by Sign - Leetcode 2149 - Python", + "url": "https://youtube.com/watch?v=SoPmcGzz9-E", + }, "215": { "title": "Kth Largest Element in an Array - Quick Select - Leetcode 215 - Python", "url": "https://youtube.com/watch?v=XEmy13g1Qxc", @@ -887,6 +943,10 @@ "title": "Implement Stack using Queues - Leetcode 225 - Python", "url": "https://youtube.com/watch?v=rW4vm0-DLYc", }, + "2251": { + "title": "Number of Flowers in Full Bloom - Leetcode 2251 - Python", + "url": "https://youtube.com/watch?v=zY3Uty9IwvY", + }, "226": { "title": "Invert Binary Tree - Depth First Search - Leetcode 226", "url": "https://youtube.com/watch?v=OnSn2XEQ4MY", @@ -935,6 +995,10 @@ "title": "Design a Food Rating System - Leetcode 2353 - Python", "url": "https://youtube.com/watch?v=Ikp8SgbgbEo", }, + "2359": { + "title": "Find Closest Node to Given Two Nodes - Leetcode 2359 - Python", + "url": "https://youtube.com/watch?v=AZA8orksO4w", + }, "2370": { "title": "Longest Ideal Subsequence - Leetcode 2370 - Python", "url": "https://youtube.com/watch?v=gR1E2oLQYSY", @@ -956,8 +1020,8 @@ "url": "https://youtube.com/watch?v=pRyFZIaKegA", }, "24": { - "title": "Swap Nodes in Pairs - Apple Interview Question - Leetcode 24", - "url": "https://youtube.com/watch?v=o811TZLAWOo", + "title": "Leetcode 24 Hour Challenge (while learning Golang)", + "url": "https://youtube.com/watch?v=a3Aep-SygUA", }, "2402": { "title": "Meeting Rooms III - Leetcode 2402 - Python", @@ -1035,6 +1099,10 @@ "title": "Minimize the Maximum Difference of Pairs - Leetcode 2616 - Python", "url": "https://youtube.com/watch?v=lf1Pxg7IrzQ", }, + "2618": { + "title": "Check if Object Instance of Class - Leetcode 2618 - JavaScript 30-Day Challenge", + "url": "https://youtube.com/watch?v=meIo-Q07Ba8", + }, "2619": { "title": "Array Prototype Last - Leetcode 2619 - JavaScript 30-Day Challenge", "url": "https://youtube.com/watch?v=3JdtfMBrUqc", @@ -1087,6 +1155,10 @@ "title": "Curry - Leetcode 2632 - JavaScript 30-Day Challenge", "url": "https://youtube.com/watch?v=pi4kqMWQXxA", }, + "2633": { + "title": "Convert Object to JSON String - Leetcode 2633 - JavaScript 30-Day Challenge", + "url": "https://youtube.com/watch?v=f94fUbHU-FY", + }, "2634": { "title": "Filter Elements from Array (Transforms) - Leetcode 2634 - JavaScript 30-Day Challenge", "url": "https://youtube.com/watch?v=w1o81gbEEJU", @@ -1103,6 +1175,10 @@ "title": "Promise Time Limit - Leetcode 2637 - JavaScript 30-Day Challenge", "url": "https://youtube.com/watch?v=hfH57rdZhOk", }, + "2648": { + "title": "Generate Fibonacci Sequence - Leetcode 2648 - JavaScript 30-Day Challenge", + "url": "https://youtube.com/watch?v=T643rQ70Jlk", + }, "2649": { "title": "Nested Array Generator - Leetcode 2649 - JavaScript 30-Day Challenge", "url": "https://youtube.com/watch?v=yo-J1jQaZYU", @@ -1139,6 +1215,10 @@ "title": "Alien Dictionary - Topological Sort - Leetcode 269 - Python", "url": "https://youtube.com/watch?v=6kTZYvNNyps", }, + "2693": { + "title": "Call Function with Custom Context - Leetcode 2693 - JavaScript 30-Day Challenge", + "url": "https://youtube.com/watch?v=du_GH-Ooa8E", + }, "2694": { "title": "Event Emitter - Leetcode 2694 - JavaScript 30-Day Challenge", "url": "https://youtube.com/watch?v=M69bjWFarU0", @@ -1163,6 +1243,10 @@ "title": "Extra Characters in a String - Leetcode 2707 - Python", "url": "https://youtube.com/watch?v=ONstwO1cD7c", }, + "2709": { + "title": "Greatest Common Divisor Traversal - Leetcode 2709 - Python", + "url": "https://youtube.com/watch?v=jZ-RVp5CVYY", + }, "271": { "title": "Encode and Decode Strings - Leetcode 271 - Python", "url": "https://youtube.com/watch?v=B1k_sxOSgv8", @@ -1179,10 +1263,6 @@ "title": "Knuth\u2013Morris\u2013Pratt KMP - Find the Index of the First Occurrence in a String - Leetcode 28 - Python", "url": "https://youtube.com/watch?v=JoF0Z7nVSrA", }, - "280": { - "title": "Wiggle Sort - Leetcode 280 - Python", - "url": "https://youtube.com/watch?v=vGsyTE4s34w", - }, "2812": { "title": "Find the Safest Path in a Grid - Leetcode 2812 - Python", "url": "https://youtube.com/watch?v=-5mQcNiVWTs", @@ -1191,6 +1271,10 @@ "title": "Move Zeroes - Leetcode 283 - Python", "url": "https://youtube.com/watch?v=aayNRwUN3Do", }, + "2864": { + "title": "Maximum Odd Binary Number - Leetcode 2864 - Python", + "url": "https://youtube.com/watch?v=EUKLOAv4-IQ", + }, "287": { "title": "Find the Duplicate Number - Floyd's Cycle Detection - Leetcode 287 - Python", "url": "https://youtube.com/watch?v=wjYnzkAhcNk", @@ -1223,6 +1307,10 @@ "title": "Divide Array Into Arrays With Max Difference - Leetcode 2966 - Python", "url": "https://youtube.com/watch?v=XleOio1oJeo", }, + "297": { + "title": "Serialize and Deserialize Binary Tree - Preorder Traversal - Leetcode 297 - Python", + "url": "https://youtube.com/watch?v=u4JAi2JJhI8", + }, "2971": { "title": "Find Polygon with the Largest Perimeter - Leetcode 2971 - Python", "url": "https://youtube.com/watch?v=Yk9Mor-Y488", @@ -1255,10 +1343,6 @@ "title": "Minimum Height Trees - Leetcode 310 - Python", "url": "https://youtube.com/watch?v=wQGQnyv_9hI", }, - "3110": { - "title": "Score of a String - Leetcode 3110 - Python", - "url": "https://youtube.com/watch?v=imbrLFL20tQ", - }, "312": { "title": "Burst Baloons - Dynamic Programming - Leetcode 312 - Python", "url": "https://youtube.com/watch?v=VFskby7lUbw", @@ -1307,6 +1391,10 @@ "title": "Reverse String - 3 Ways - Leetcode 344 - Python", "url": "https://youtube.com/watch?v=_d0T_2Lk2qA", }, + "347": { + "title": "Top K Frequent Elements - Bucket Sort - Leetcode 347 - Python", + "url": "https://youtube.com/watch?v=YPTqKIgVk-k", + }, "349": { "title": "Intersection of Two Arrays - Leetcode 349 - Python", "url": "https://youtube.com/watch?v=fwUTXaMom6U", @@ -1591,6 +1679,10 @@ "title": "Brick Wall - Leetcode 554 - Python", "url": "https://youtube.com/watch?v=Kkmv2h48ekw", }, + "557": { + "title": "Reverse Words in a String III - Leetcode 557 - Python", + "url": "https://youtube.com/watch?v=7kUEwiwwnlA", + }, "56": { "title": "Merge Intervals - Sorting - Leetcode 56", "url": "https://youtube.com/watch?v=44H3cEC2fFM", @@ -1611,6 +1703,10 @@ "title": "Subtree of Another Tree - Leetcode 572 - Python", "url": "https://youtube.com/watch?v=E36O5SWp-LE", }, + "576": { + "title": "Out of Boundary Paths - Leetcode 576 - Python", + "url": "https://youtube.com/watch?v=Bg5CLRqtNmk", + }, "58": { "title": "Length of Last Word - Leetcode 58 - Python", "url": "https://youtube.com/watch?v=KT9rltZTybQ", @@ -1627,6 +1723,10 @@ "title": "Can Place Flowers - Leetcode 605 - Python", "url": "https://youtube.com/watch?v=ZGxqqjljpUI", }, + "606": { + "title": "Construct String from Binary Tree - Leetcode 606 - Python", + "url": "https://youtube.com/watch?v=b1WpYxnuebQ", + }, "61": { "title": "Rotate List - Linked List - Leetcode 61 - Python", "url": "https://youtube.com/watch?v=UcGtPs2LE_c", @@ -1727,6 +1827,10 @@ "title": "Sqrt(x) - Leetcode 69 - Python", "url": "https://youtube.com/watch?v=zdMhGxRWutQ", }, + "691": { + "title": "Stickers to Spell Word - DP Memoization - Leetcode 691 - Python", + "url": "https://youtube.com/watch?v=hsomLb6mUdI", + }, "695": { "title": "Max Area of Island - Leetcode 695 - Python", "url": "https://youtube.com/watch?v=iJGr1OtmH0c", @@ -1775,6 +1879,10 @@ "title": "Subarray Product Less Than K - Leetcode 713 - Python", "url": "https://youtube.com/watch?v=Cg6_nF7YIks", }, + "72": { + "title": "Edit Distance - Dynamic Programming - Leetcode 72 - Python", + "url": "https://youtube.com/watch?v=XYi2-LPrwm4", + }, "721": { "title": "Accounts Merge - Leetcode 721 - Python", "url": "https://youtube.com/watch?v=6st4IxEF-90", @@ -1935,6 +2043,10 @@ "title": "Stone Game - Leetcode 877 - Python", "url": "https://youtube.com/watch?v=uhgdXOlGYqE", }, + "879": { + "title": "Profitable Schemes - Leetcode 879 - Python", + "url": "https://youtube.com/watch?v=CcLKQLKvOl8", + }, "88": { "title": "Merge Sorted Array - Leetcode 88 - Python", "url": "https://youtube.com/watch?v=P1Ic85RarKY", @@ -2055,6 +2167,10 @@ "title": "Check Completeness of a Binary Tree - Leetcode 958 - Python", "url": "https://youtube.com/watch?v=olbiZ-EOSig", }, + "97": { + "title": "Interleaving Strings - Dynamic Programming - Leetcode 97 - Python", + "url": "https://youtube.com/watch?v=3Rw3p9LrgvE", + }, "973": { "title": "K Closest Points to Origin - Heap / Priority Queue - Leetcode 973 - Python", "url": "https://youtube.com/watch?v=rI2EBUEMfTk", @@ -2087,6 +2203,10 @@ "title": "Smallest String Starting From Leaf - Leetcode 988 - Python", "url": "https://youtube.com/watch?v=UvdWfxQ_ZDs", }, + "989": { + "title": "Add to Array-Form of Integer - Leetcode 989 - Python", + "url": "https://youtube.com/watch?v=eBTZQt1TWfk", + }, "992": { "title": "Subarrays with K Different Integers - Leetcode 992 - Python", "url": "https://youtube.com/watch?v=etI6HqWVa8U", diff --git a/pyproject.toml b/pyproject.toml index 464e2bf..db0da05 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "leetcode-study-tool" -version = "1.2.2" +version = "1.3.3" description = "A tool for studying Leetcode with Python" authors = [{name="John Sutor", email="johnsutor3@gmail.com" }] license = {file = "LICENSE.txt"} @@ -22,11 +22,12 @@ classifiers=[ 'Operating System :: POSIX :: Linux', # Supported Python versions - 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', # License 'License :: OSI Approved :: MIT License', @@ -48,7 +49,7 @@ dev = [ [tool.black] line-length = 80 -target-version = ["py37", "py38", "py39", "py310", "py311"] +target-version = ["py38", "py39", "py310", "py311", "py312", "py313"] [options] python_requires = ">=3.6" diff --git a/youtube.json b/youtube.json index cfbf968..6bed3d7 100644 --- a/youtube.json +++ b/youtube.json @@ -43,6 +43,10 @@ "title": "Uncrossed Lines - Leetcode 1035 - Python", "url": "https://youtube.com/watch?v=mnJF4vJ7GyE" }, + "104": { + "title": "Maximum Depth of Binary Tree - 3 Solutions - Leetcode 104 - Python", + "url": "https://youtube.com/watch?v=hTM3phVI6YQ" + }, "1041": { "title": "Robot Bounded in Circle - Math & Geometry - Leetcode 1041 - Python", "url": "https://youtube.com/watch?v=nKv2LnC_g6E" @@ -335,6 +339,10 @@ "title": "Longest Happy String - Leetcode 1405 - Python", "url": "https://youtube.com/watch?v=8u-H6O_XQKE" }, + "1406": { + "title": "Stone Game III - Leetcode 1406 - Python", + "url": "https://youtube.com/watch?v=HsLG5QW9CFQ" + }, "141": { "title": "Linked List Cycle - Floyd's Tortoise and Hare - Leetcode 141 - Python", "url": "https://youtube.com/watch?v=gBTe7lFR3vc" @@ -407,6 +415,10 @@ "title": "Insertion Sort List - Leetcode 147 - Python", "url": "https://youtube.com/watch?v=Kk6mXAzqX3Y" }, + "1470": { + "title": "Shuffle the Array (Constant Space) - Leetcode 1470 - Python", + "url": "https://youtube.com/watch?v=IvIKD_EU8BY" + }, "1472": { "title": "Design Browser History - Leetcode 1472 - Python", "url": "https://youtube.com/watch?v=i1G-kKnBu8k" @@ -463,6 +475,10 @@ "title": "Find Minimum in Rotated Sorted Array - Binary Search - Leetcode 153 - Python", "url": "https://youtube.com/watch?v=nIVW4P8b1VA" }, + "1531": { + "title": "String Compression II - Leetcode 1531 - Python", + "url": "https://youtube.com/watch?v=ISIG3o-Xofg" + }, "1544": { "title": "Make The String Great - Leetcode 1544 - Python", "url": "https://youtube.com/watch?v=10tBWNjzvtw" @@ -515,6 +531,10 @@ "title": "Even Odd Tree - Leetcode 1609 - Python", "url": "https://youtube.com/watch?v=FkNWN1Fj_TY" }, + "1611": { + "title": "Minimum Number of One Bit Operations to Make Integers Zero - Leetcode 1611 - Python", + "url": "https://youtube.com/watch?v=yRI18_MaG7k" + }, "1614": { "title": "Maximum Nesting Depth of the Parentheses - Leetcode 1614 - Python", "url": "https://youtube.com/watch?v=FiQFJvCvWK4" @@ -559,6 +579,10 @@ "title": "Check If Two String Arrays are Equivalent - Leetcode 1662 - Python", "url": "https://youtube.com/watch?v=ejBwc2oE7ck" }, + "1669": { + "title": "Merge in Between Linked Lists - Leetcode 1669 - Python", + "url": "https://youtube.com/watch?v=pI775VutBxg" + }, "167": { "title": "TWO SUM II - Amazon Coding Interview Question - Leetcode 167 - Python", "url": "https://youtube.com/watch?v=cQ1Oz4ckceM" @@ -571,6 +595,14 @@ "title": "Excel Sheet Column Title - Leetcode 168 - Python", "url": "https://youtube.com/watch?v=X_vJDpCCuoA" }, + "1685": { + "title": "Sum of Absolute Differences in a Sorted Array - Leetcode 1685 - Python", + "url": "https://youtube.com/watch?v=3nkc-e66JmA" + }, + "1688": { + "title": "Count of Matches in Tournament - Leetcode 1688 - Python", + "url": "https://youtube.com/watch?v=lslcc0tumpU" + }, "169": { "title": "Majority Element - Leetcode 169 - Python", "url": "https://youtube.com/watch?v=7pnhv842keE" @@ -583,6 +615,10 @@ "title": "Number of Students Unable to Eat Lunch - Leetcode 1700 - Python", "url": "https://youtube.com/watch?v=d_cvtFwnOZg" }, + "1716": { + "title": "Calculate Money in Leetcode Bank - Leetcode 1716 - Python", + "url": "https://youtube.com/watch?v=tKK7gvPCQfs" + }, "1721": { "title": "Swapping Nodes in a Linked List - Leetcode 1721 - Python", "url": "https://youtube.com/watch?v=4LsrgMyQIjQ" @@ -595,6 +631,10 @@ "title": "Binary Search Tree Iterator - Leetcode 173 - Python", "url": "https://youtube.com/watch?v=RXy5RzGF5wo" }, + "1750": { + "title": "Minimum Length of String after Deleting Similar Ends - Leetcode 1750 - Python", + "url": "https://youtube.com/watch?v=318hrWVr_5U" + }, "1758": { "title": "Minimum Changes To Make Alternating Binary String - Leetcode 1758 - Python", "url": "https://youtube.com/watch?v=9vAQdmVU2ds" @@ -607,6 +647,14 @@ "title": "Largest Number - Leetcode 179 - Python", "url": "https://youtube.com/watch?v=WDx6Y4i4xJ8" }, + "1793": { + "title": "Maximum Score of a Good Subarray - Leetcode 1793 - Python", + "url": "https://youtube.com/watch?v=_K7oyQlAjv4" + }, + "1799": { + "title": "Maximize Score after N Operations - Leetcode 1799 - Python", + "url": "https://youtube.com/watch?v=RRQVDqp5RSE" + }, "18": { "title": "4Sum - Leetcode 18 - Python", "url": "https://youtube.com/watch?v=EYeR-_1NRlQ" @@ -707,6 +755,10 @@ "title": "Number of 1 Bits - Leetcode 191 - Python", "url": "https://youtube.com/watch?v=5Km3utixwZs" }, + "1911": { + "title": "Maximum Alternating Subsequence Sum - Dynamic Programming - Leetcode 1911 - Python", + "url": "https://youtube.com/watch?v=4v42XOuU1XA" + }, "1921": { "title": "Eliminate Maximum Number of Monsters - Leetcode 1921 - Weekly Contest 248 - Python", "url": "https://youtube.com/watch?v=6QQRayzOTD4" @@ -855,6 +907,10 @@ "title": "Number of Ways to Divide a Long Corridor - Leetcode 2147 - Python", "url": "https://youtube.com/watch?v=YOTjCd4Eyhc" }, + "2149": { + "title": "Rearrange Array Elements by Sign - Leetcode 2149 - Python", + "url": "https://youtube.com/watch?v=SoPmcGzz9-E" + }, "215": { "title": "Kth Largest Element in an Array - Quick Select - Leetcode 215 - Python", "url": "https://youtube.com/watch?v=XEmy13g1Qxc" @@ -887,6 +943,10 @@ "title": "Implement Stack using Queues - Leetcode 225 - Python", "url": "https://youtube.com/watch?v=rW4vm0-DLYc" }, + "2251": { + "title": "Number of Flowers in Full Bloom - Leetcode 2251 - Python", + "url": "https://youtube.com/watch?v=zY3Uty9IwvY" + }, "226": { "title": "Invert Binary Tree - Depth First Search - Leetcode 226", "url": "https://youtube.com/watch?v=OnSn2XEQ4MY" @@ -935,6 +995,10 @@ "title": "Design a Food Rating System - Leetcode 2353 - Python", "url": "https://youtube.com/watch?v=Ikp8SgbgbEo" }, + "2359": { + "title": "Find Closest Node to Given Two Nodes - Leetcode 2359 - Python", + "url": "https://youtube.com/watch?v=AZA8orksO4w" + }, "2370": { "title": "Longest Ideal Subsequence - Leetcode 2370 - Python", "url": "https://youtube.com/watch?v=gR1E2oLQYSY" @@ -956,8 +1020,8 @@ "url": "https://youtube.com/watch?v=pRyFZIaKegA" }, "24": { - "title": "Swap Nodes in Pairs - Apple Interview Question - Leetcode 24", - "url": "https://youtube.com/watch?v=o811TZLAWOo" + "title": "Leetcode 24 Hour Challenge (while learning Golang)", + "url": "https://youtube.com/watch?v=a3Aep-SygUA" }, "2402": { "title": "Meeting Rooms III - Leetcode 2402 - Python", @@ -1035,6 +1099,10 @@ "title": "Minimize the Maximum Difference of Pairs - Leetcode 2616 - Python", "url": "https://youtube.com/watch?v=lf1Pxg7IrzQ" }, + "2618": { + "title": "Check if Object Instance of Class - Leetcode 2618 - JavaScript 30-Day Challenge", + "url": "https://youtube.com/watch?v=meIo-Q07Ba8" + }, "2619": { "title": "Array Prototype Last - Leetcode 2619 - JavaScript 30-Day Challenge", "url": "https://youtube.com/watch?v=3JdtfMBrUqc" @@ -1087,6 +1155,10 @@ "title": "Curry - Leetcode 2632 - JavaScript 30-Day Challenge", "url": "https://youtube.com/watch?v=pi4kqMWQXxA" }, + "2633": { + "title": "Convert Object to JSON String - Leetcode 2633 - JavaScript 30-Day Challenge", + "url": "https://youtube.com/watch?v=f94fUbHU-FY" + }, "2634": { "title": "Filter Elements from Array (Transforms) - Leetcode 2634 - JavaScript 30-Day Challenge", "url": "https://youtube.com/watch?v=w1o81gbEEJU" @@ -1103,6 +1175,10 @@ "title": "Promise Time Limit - Leetcode 2637 - JavaScript 30-Day Challenge", "url": "https://youtube.com/watch?v=hfH57rdZhOk" }, + "2648": { + "title": "Generate Fibonacci Sequence - Leetcode 2648 - JavaScript 30-Day Challenge", + "url": "https://youtube.com/watch?v=T643rQ70Jlk" + }, "2649": { "title": "Nested Array Generator - Leetcode 2649 - JavaScript 30-Day Challenge", "url": "https://youtube.com/watch?v=yo-J1jQaZYU" @@ -1139,6 +1215,10 @@ "title": "Alien Dictionary - Topological Sort - Leetcode 269 - Python", "url": "https://youtube.com/watch?v=6kTZYvNNyps" }, + "2693": { + "title": "Call Function with Custom Context - Leetcode 2693 - JavaScript 30-Day Challenge", + "url": "https://youtube.com/watch?v=du_GH-Ooa8E" + }, "2694": { "title": "Event Emitter - Leetcode 2694 - JavaScript 30-Day Challenge", "url": "https://youtube.com/watch?v=M69bjWFarU0" @@ -1163,6 +1243,10 @@ "title": "Extra Characters in a String - Leetcode 2707 - Python", "url": "https://youtube.com/watch?v=ONstwO1cD7c" }, + "2709": { + "title": "Greatest Common Divisor Traversal - Leetcode 2709 - Python", + "url": "https://youtube.com/watch?v=jZ-RVp5CVYY" + }, "271": { "title": "Encode and Decode Strings - Leetcode 271 - Python", "url": "https://youtube.com/watch?v=B1k_sxOSgv8" @@ -1179,10 +1263,6 @@ "title": "Knuth\u2013Morris\u2013Pratt KMP - Find the Index of the First Occurrence in a String - Leetcode 28 - Python", "url": "https://youtube.com/watch?v=JoF0Z7nVSrA" }, - "280": { - "title": "Wiggle Sort - Leetcode 280 - Python", - "url": "https://youtube.com/watch?v=vGsyTE4s34w" - }, "2812": { "title": "Find the Safest Path in a Grid - Leetcode 2812 - Python", "url": "https://youtube.com/watch?v=-5mQcNiVWTs" @@ -1191,6 +1271,10 @@ "title": "Move Zeroes - Leetcode 283 - Python", "url": "https://youtube.com/watch?v=aayNRwUN3Do" }, + "2864": { + "title": "Maximum Odd Binary Number - Leetcode 2864 - Python", + "url": "https://youtube.com/watch?v=EUKLOAv4-IQ" + }, "287": { "title": "Find the Duplicate Number - Floyd's Cycle Detection - Leetcode 287 - Python", "url": "https://youtube.com/watch?v=wjYnzkAhcNk" @@ -1595,6 +1679,10 @@ "title": "Brick Wall - Leetcode 554 - Python", "url": "https://youtube.com/watch?v=Kkmv2h48ekw" }, + "557": { + "title": "Reverse Words in a String III - Leetcode 557 - Python", + "url": "https://youtube.com/watch?v=7kUEwiwwnlA" + }, "56": { "title": "Merge Intervals - Sorting - Leetcode 56", "url": "https://youtube.com/watch?v=44H3cEC2fFM" @@ -1615,6 +1703,10 @@ "title": "Subtree of Another Tree - Leetcode 572 - Python", "url": "https://youtube.com/watch?v=E36O5SWp-LE" }, + "576": { + "title": "Out of Boundary Paths - Leetcode 576 - Python", + "url": "https://youtube.com/watch?v=Bg5CLRqtNmk" + }, "58": { "title": "Length of Last Word - Leetcode 58 - Python", "url": "https://youtube.com/watch?v=KT9rltZTybQ" @@ -1631,6 +1723,10 @@ "title": "Can Place Flowers - Leetcode 605 - Python", "url": "https://youtube.com/watch?v=ZGxqqjljpUI" }, + "606": { + "title": "Construct String from Binary Tree - Leetcode 606 - Python", + "url": "https://youtube.com/watch?v=b1WpYxnuebQ" + }, "61": { "title": "Rotate List - Linked List - Leetcode 61 - Python", "url": "https://youtube.com/watch?v=UcGtPs2LE_c" @@ -1879,6 +1975,10 @@ "title": "Word Search - Backtracking - Leetcode 79 - Python", "url": "https://youtube.com/watch?v=pfiQ_PS1g8E" }, + "799": { + "title": "Champagne Tower - Leetcode 799 - Python", + "url": "https://youtube.com/watch?v=LQ8TuG_QADM" + }, "80": { "title": "Remove Duplicates from Sorted Array II - Leetcode 80 - Python", "url": "https://youtube.com/watch?v=ycAq8iqh0TI" @@ -1943,6 +2043,10 @@ "title": "Stone Game - Leetcode 877 - Python", "url": "https://youtube.com/watch?v=uhgdXOlGYqE" }, + "879": { + "title": "Profitable Schemes - Leetcode 879 - Python", + "url": "https://youtube.com/watch?v=CcLKQLKvOl8" + }, "88": { "title": "Merge Sorted Array - Leetcode 88 - Python", "url": "https://youtube.com/watch?v=P1Ic85RarKY" @@ -2099,6 +2203,10 @@ "title": "Smallest String Starting From Leaf - Leetcode 988 - Python", "url": "https://youtube.com/watch?v=UvdWfxQ_ZDs" }, + "989": { + "title": "Add to Array-Form of Integer - Leetcode 989 - Python", + "url": "https://youtube.com/watch?v=eBTZQt1TWfk" + }, "992": { "title": "Subarrays with K Different Integers - Leetcode 992 - Python", "url": "https://youtube.com/watch?v=etI6HqWVa8U"