آموزش دوره جامع ساختمان داده و الگوریتم - C++ و Java - آخرین آپدیت

دانلود Data Structures and Algorithms Complete Course - CPP & JAVA

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره:

آموزش ساختمان داده و الگوریتم با C++ و Java

این دوره جامع ساختمان داده و الگوریتم با استفاده از C++ و Java طراحی شده است تا به شما کمک کند نحوه مدیریت داده ها و حل مسائل پیچیده را با استفاده از C++ و Java، دو زبان برنامه نویسی محبوب، یاد بگیرید.

این دوره DSA در C++ و Java ارائه شده توسط GeeksforGeeks برای هر کسی که به دنبال بهبود مهارت های برنامه نویسی خود از سطوح پایه تا پیشرفته است، ایده آل است. در طول دوره، شما ساختارهای داده اساسی و پیچیده را از جمله آرایه ها، لیست های پیوندی، پشته ها، صف ها، درخت ها و گراف ها را بررسی خواهید کرد. علاوه بر این، الگوریتم های ضروری مانند مرتب سازی، جستجو و هشینگ را پوشش خواهیم داد. همچنین در مورد پیچیدگی زمانی و مکانی ساختمان داده ها و الگوریتم ها و همچنین مفاهیم کلیدی مانند بازگشت، نماد O بزرگ، برنامه نویسی پویا، الگوریتم های تقسیم و حل و الگوریتم های حریصانه که برای دستکاری و بازیابی کارآمد داده ها حیاتی هستند، یاد خواهید گرفت.

بنابراین، چه به دنبال ایفای نقش در یک شرکت فناوری برتر باشید و چه به سادگی به دنبال ارتقای مهارت های برنامه نویسی خود باشید، این دوره DSA تمام ابزارهای لازم برای موفقیت را در اختیار شما قرار می دهد.

این دوره DSA با استفاده از C++ و JAVA توسط متخصصان برنامه نویسی رقابتی و کهنه سربازان صنعت، از جمله مدیر عامل GeeksforGeeks، آقای Sandeep Jain، گردآوری شده است و تضمین می کند که آموزش و ارتقاء مهارت های درجه یک را دریافت می کنید.

چرا باید DSA یاد بگیریم؟

تسلط بر DSA برای درک فرآیند توسعه نرم افزار، بهینه سازی کد برای عملکرد و شکستن مصاحبه های فنی در شرکت های فناوری برتر بسیار مهم است. همچنین مهارت های حل مسئله شما را افزایش می دهد و شما را به یک برنامه نویس ماهر و یک نامزد مطلوب در صنعت فناوری رقابتی تبدیل می کند.

چه کسانی باید در این دوره DSA ثبت نام کنند؟

  • دانشجویان: دانشجویان کالج و دانشگاه که می خواهند مهارت های حل مسئله انتقادی خود را بهبود بخشند و تجربه عملی کسب کنند.
  • برنامه نویسان مشتاق: کسانی که می خواهند توسعه دهنده نرم افزار، مهندس سیستم، مهندس داده شوند یا در زمینه های مرتبط با فناوری کار کنند.
  • توسعه دهندگان حرفه ای/مهندسان نرم افزار: توسعه دهندگان باتجربه ای که می خواهند دانش خود را در مورد ساختارهای داده و الگوریتم های پیشرفته برای بهبود مهارت های حل مسئله و پیشرفت در حرفه خود عمیق تر کنند.

پیش نیازها:

  • دانش برنامه نویسی: برای ثبت نام در این دوره باید دانش قبلی از C++ و Java داشته باشید.

منابع دوره:

  • منابع آنلاین: دسترسی به پلتفرم های کدنویسی و تمرین ها برای تمرین عملی.
  • نرم افزار: راهنمایی در مورد راه اندازی محیط توسعه.

مدرس:

این دوره جامع ساختمان داده و الگوریتم با استفاده از C++ و JAVA توسط متخصصان صنعت و علاقه مندان به برنامه نویسی رقابتی، از جمله مدیر عامل GeeksforGeeks، آقای Sandeep Jain، توسعه و تدریس می شود که تجربه و تخصص خود را برای ارائه بهترین تجربه یادگیری به شما به ارمغان می آورند.

واژه‌های کلیدی:

ساختمان داده، الگوریتم، C++، Java، آرایه، آموزش DSA، دوره DSA، برنامه نویسی، GeeksforGeeks.


سرفصل ها و درس ها

DSA - چیستی، چرایی و چگونگی؟ DSA - What, Why and How ?

  • چرا DSA مهم است؟ Why is DSA Important ??

  • نقشه راه یادگیری DSA Roadmap to learn DSA

تحلیل الگوریتم‌ها Analysis of Algorithms

  • تحلیل مجانبی Asymptotic Analysis

  • تحلیل الگوریتم‌ها (پیش‌زمینه) Analysis of Algorithms(Background)

  • مرتبه رشد Order of Growth

  • بهترین، میانگین و بدترین حالات Best, Average and Worst cases

  • نمادگذاری مجانبی Asymptotic Notation

  • نماد O بزرگ Big O Notation

  • نماد امگا Omega Notation

  • نماد تتا Theta Notation

  • تحلیل حلقه‌های متداول Analysis of Common loops

  • تحلیل حلقه‌های چندگانه Analysis of multiple loops

  • تحلیل بازگشت (مقدمه) Analysis of Recursion (Introduction)

  • روش درخت بازگشت برای حل روابط بازگشتی Recursion Tree Method for Solving Recurrences

  • مثال‌های بیشتر روابط بازگشتی More Example Recurrences

  • کران‌های بالا با استفاده از روش درخت بازگشت Upper Bounds Using Recursion Tree Method

  • پیچیدگی فضایی Space Complexity

ریاضیات Mathematics

  • شمارش ارقام Count Digits

  • اعداد پالیندروم Palindrome Numbers

  • فاکتوریل یک عدد Factorial of a Number

  • صفرهای انتهایی در فاکتوریل Trailing Zeros in Factorial

  • ب.م.م یا بزرگترین مقسوم علیه مشترک دو عدد GCD or HCF of two Numbers

  • ک.م.م یا کوچکترین مضرب مشترک دو عدد LCM of Two Numbers

  • بررسی اول بودن Check for Prime

  • عوامل اول Prime Factors

  • تمام مقسوم‌علیه‌های یک عدد All Divisors of a Number

  • غربال اراتستن Sieve of Eratosthenes

  • محاسبه توان Computing Power

  • توان تکراری Iterative Power

جادوی بیت Bit Magic

  • عملگرهای بیتی در ++CPP (قسمت 1) Bitwise Operators in CPP (Part 1)

  • عملگرهای بیتی در ++CPP (قسمت 2) Bitwise Operators in CPP (Part 2)

  • عملگر بیتی در جاوا (قسمت 1) Bitwise Operator in Java (Part 1)

  • عملگرهای بیتی در جاوا (قسمت 2) Bitwise Operators in Java (Part 2)

  • عملگرهای بیتی در جاوا (قسمت 3) Bitwise Operators in Java (Part 3)

  • نمایش باینری اعداد منفی Binary Representation of Negative Numbers

  • بررسی اینکه آیا بیت K ام تنظیم شده است یا خیر Check if Kth bit is set or not

  • شمارش بیت‌های تنظیم شده Count Set Bits

  • توان دو Power of Two

  • یک فرد با تعداد تکرار فرد One Odd Occurring

  • دو فرد با تعداد تکرار فرد Two Odd Occurring

  • مجموعه توان با استفاده از بیت‌وایز Power Set using Bitwise

بازگشت Recursion

  • مقدمه بازگشت Recursion Introduction

  • کاربردهای بازگشت Applications of Recursion

  • تمرین خروجی بازگشت - قسمت 1 Recursion Output Practice - Part 1

  • تمرین خروجی بازگشت - قسمت 2 Recursion Output Practice - Part 2

  • چاپ N به 1 با استفاده از بازگشت Print N to 1 Using Recursion

  • چاپ 1 به N با استفاده از بازگشت Print 1 to N Using Recursion

  • بازگشت دمی Tail Recursion

  • نوشتن حالات پایه در بازگشت Writing Base Cases in Recursion

  • مجموع اعداد طبیعی با استفاده از بازگشت Natural Number Sum using Recursion

  • بررسی پالیندروم با استفاده از بازگشت Palindrome Check using Recursion

  • مجموع ارقام با استفاده از بازگشت Sum of Digits Using Recursion

  • مسئله برش طناب Rope Cutting Problem

  • تولید زیرمجموعه‌ها Generate Subsets

  • برج هانوی Tower of Hanoi

  • مسئله جوزفوس Josephus Problem

  • مسئله جمع زیرمجموعه (راه حل بازگشتی) (متوسط) Subset Sum Problem (Recursive Solution) (Medium)

  • چاپ تمام جایگشت‌ها Printing all Permutations

آرایه‌ها Arrays

  • مقدمه آرایه‌ها Introduction to Arrays

  • انواع آرایه Array Types

  • بردار در ++C Vector in C++

  • ArrayList در جاوا ArrayList in Java

  • عملیات روی آرایه‌ها (قسمت 1) Operations on Arrays (Part 1)

  • عملیات روی آرایه‌ها (قسمت 2) Operations on Arrays (Part 2)

  • بزرگترین عنصر در یک آرایه Largest Element in an Array

  • دومین عنصر بزرگ در آرایه Second Largest Element in Array

  • بررسی اینکه آیا یک آرایه مرتب شده است Check if an Array is Sorted

  • معکوس کردن یک آرایه Reverse an Array

  • حذف موارد تکراری از یک آرایه مرتب شده Remove duplicates from a sorted array

  • انتقال صفرها به انتها Move Zeros to End

  • چرخش به چپ یک آرایه به میزان یک واحد Left Rotate an Array by One

  • چرخش به چپ یک آرایه به میزان D واحد Left Rotate an Array by D places

  • مسئله رهبران در یک آرایه Leaders in an Array problem

  • مسئله حداکثر اختلاف با ترتیب Maximum Difference Problem with Order

  • فراوانی‌ها در یک آرایه مرتب شده Frequencies in a Sorted Array

  • مسئله خرید و فروش سهام (قسمت 1) Stock Buy and Sell Problem (Part 1)

  • مسئله خرید و فروش سهام (قسمت 2) Stock Buy and Sell problem (Part 2)

  • به دام انداختن آب باران Trapping Rain Water

  • حداکثر 1های متوالی Maximum consecutive 1s

  • حداکثر مجموع زیرآرایه Maximum subarray sum

  • طولانی‌ترین زیرآرایه زوج فرد Longest Even Odd Subarray

  • حداکثر مجموع زیرآرایه دایره‌ای Maximum Circular Sum Subarray

  • عنصر اکثریت Majority Element

  • حداقل چرخش متوالی Minimum Consecutive Flips

  • تکنیک پنجره کشویی Sliding Window Technique

  • زیرآرایه با مجموع معین Subarray with Given Sum

  • مجموع پیشوند Prefix Sum

  • نقطه تعادل Equilibrium Point

  • حداکثر عنصر ظاهرشونده Maximum Appearing Element

جستجو Searching

  • جستجوی باینری (تکراری) Binary Search (Iterative)

  • جستجوی باینری (بازگشتی) Binary Search (Recursive)

  • تحلیل جستجوی باینری Analysis of Binary Search

  • شاخص اولین وقوع در مرتب شده Index of first Occurrence in Sorted

  • شاخص آخرین وقوع در مرتب شده Index of last Occurrence in Sorted

  • شمارش وقوع‌ها در مرتب شده Count Occurrences in Sorted

  • شمارش 1ها در یک آرایه باینری مرتب شده Count 1s in a Sorted Binary Array

  • جذر Square root

  • جستجو در آرایه با اندازه بی‌نهایت Search in Infinite Sized Array

  • جستجو در آرایه چرخیده مرتب شده Search in Sorted Rotated Array

  • یافتن یک عنصر قله Find a Peak Element

  • رویکرد دو اشاره‌گر Two Pointers Approach

  • سه‌تایی در یک آرایه مرتب شده Triplet in a Sorted Array

  • میانه دو آرایه مرتب شده Median of two sorted arrays

  • عناصر تکراری قسمت (1) Repeating Elements Part (1)

  • عناصر تکراری قسمت (2) Repeating Elements Part (2)

  • تخصیص حداقل صفحات (روش ساده) Allocate Minimum Pages (Naive Method)

  • تخصیص حداقل صفحات (جستجوی باینری) Allocate Minimum Pages (Binary Search)

مرتب‌سازی Sorting

  • مروری بر الگوریتم مرتب‌سازی Overview of sorting algorithm

  • مرتب‌سازی در ++C STL Sort in C++ STL

  • مرتب‌سازی در جاوا Sorting in Java

  • Arrays.sort در جاوا Arrays.sort in Java

  • Collections.Sort در جاوا Collections.Sort in Java

  • پایداری در الگوریتم مرتب‌سازی Stability in Sorting Algorithm

  • مرتب‌سازی حبابی Bubble Sort

  • مرتب‌سازی انتخابی Selection Sort

  • مرتب‌سازی درجی Insertion Sort

  • مقدمه مرتب‌سازی ادغامی Merge sort introduction

  • ادغام دو آرایه مرتب شده Merge two sorted arrays

  • تابع ادغام مرتب‌سازی ادغامی Merge function of Merge sort

  • الگوریتم مرتب‌سازی ادغامی Merge Sorting Algorithm

  • تحلیل مرتب‌سازی ادغامی Merge Sort Analysis

  • اشتراک دو آرایه مرتب شده Intersection of two sorted arrays

  • اجتماع دو آرایه مرتب شده Union of two sorted arrays

  • شمارش وارونگی‌ها در آرایه Count inversions in Array

  • افراز ساده Naive partition

  • افراز لوموتو Lomuto Partition

  • افراز هور Hoare partition

  • مقدمه مرتب‌سازی سریع Quick Sort Introduction

  • مرتب‌سازی سریع با استفاده از افراز لوموتو QuickSort using Lomuto Partition

  • مرتب‌سازی سریع با استفاده از افراز هور QuickSort using Hoare Partition

  • تحلیل مرتب‌سازی سریع QuickSort analysis

  • تحلیل فضای مرتب‌سازی سریع Space Analysis of QuickSort

  • انتخاب محور و بدترین حالت مرتب‌سازی سریع Choice of pivot and worst case of quick sort

  • حذف فراخوانی دمی در مرتب‌سازی سریع Tail call elimination in QuickSort

  • عنصر K ام کوچکترین Kth Smallest Element

  • حداقل اختلاف در یک آرایه Minimum Difference in an Array

  • مسئله توزیع شکلات Chocolate Distribution Problem

  • مرتب‌سازی یک آرایه با دو نوع عنصر Sort an Array with two types of elements

  • مرتب‌سازی یک آرایه با سه نوع عنصر Sort an array with three types of elements

  • ادغام بازه‌های همپوشان Merge overlapping intervals

  • ملاقات با حداکثر مهمانان Meeting the maximum guests

  • مرتب‌سازی چرخه‌ای Cycle Sort

  • مرتب‌سازی هرمی Heap Sort

  • مرتب‌سازی شمارشی Counting Sort

  • مرتب‌سازی مبنایی Radix Sort

  • مرتب‌سازی سطلی Bucket Sort

ماتریس Matrix

  • آرایه چندبعدی در ++CPP Multidimensional array in CPP

  • عبور آرایه‌های دوبعدی به عنوان آرگومان در ++CPP Passing 2D arrays as arguments in CPP

  • آرایه چندبعدی در جاوا Multidimensional array in Java

  • عبور آرایه‌های دوبعدی به عنوان آرگومان در جاوا Passing 2D arrays as arguments in Java

  • ماتریس در الگوی مارپیچی Matrix in Snake Pattern

  • پیمایش مرزی ماتریس Matrix Boundary Traversal

  • ترانهاده یک ماتریس Transpose of a Matrix

  • چرخاندن ماتریس پادساعتگرد به اندازه 90 درجه Rotate Matrix Anti-clockwise by 90

  • پیمایش مارپیچی ماتریس Spiral Traversal of Matrix

  • جستجو در ماتریس مرتب شده سطری و ستونی Search in Row-wise and Column-wise sorted matrix

  • میانه یک ماتریس مرتب شده سطری ++C Median of a Row Wise Sorted Matrix C++

  • میانه یک ماتریس مرتب شده سطری جاوا Median of a Row Wise Sorted Matrix Java

هشینگ Hashing

  • مقدمه هشینگ Introduction to Hashing

  • کاربرد هشینگ Hashing Application

  • جدول آدرس مستقیم Direct Address Table

  • توابع هشینگ Hashing Functions

  • مدیریت برخورد Collision Handling

  • زنجیره‌سازی Chaining

  • پیاده‌سازی زنجیره‌سازی Implementation of Chaining

  • آدرس‌دهی باز Open Addressing

  • هشینگ مضاعف Double Hashing

  • پیاده‌سازی آدرس‌دهی باز Implementation of Open Addressing

  • زنجیره‌سازی در مقابل آدرس‌دهی باز Chaining vs Open Addressing

  • Unordered_set در ++C STL Unordered_set in C++ STL

  • Unordered_map در ++C STL Unordered_map in C++ STL

  • HashSet در جاوا HashSet in Java

  • HashMap در جاوا HashMap in Java

  • شمارش عناصر متمایز Count Distinct Elements

  • فراوانی عناصر آرایه Frequencies of array elements

  • اشتراک دو آرایه نامرتب Intersection of two unsorted arrays

  • اجتماع دو آرایه نامرتب Union of two unsorted arrays

  • جفت با مجموع معین در آرایه نامرتب Pair with given sum in unsorted array

  • زیرآرایه با مجموع صفر Subarray with zero sum

  • زیرآرایه با مجموع معین Subarray with given Sum

  • طولانی‌ترین زیرآرایه با مجموع معین Longest subarray with given sum

  • طولانی‌ترین زیرآرایه با تعداد مساوی 0 و 1 Longest subarray with equal number of 0's and 1's

  • طولانی‌ترین بازه مشترک با مجموع یکسان در آرایه‌های باینری Longest common span with same sum in binary arrays

  • طولانی‌ترین زیردنباله متوالی Longest Consecutive Subsequence

  • شمارش عناصر متمایز در هر پنجره Count Distinct Elements In Every Window

  • بیش از n/k وقوع More than n/k Occurences

  • بیش از n/k وقوع (راه حل (O(nk) ) More than n/k Occurences (O(nk) solution)

رشته String

  • مقدمه رشته Introduction to String

  • رشته‌ها در ++C Strings in C++

  • رشته در جاوا String in Java

  • بررسی پالیندروم Palindrome Check

  • بررسی اینکه آیا یک رشته زیردنباله از دیگری است Check if a String is Subsequence of Other

  • بررسی آناگرام Check for Anagram

  • چپ‌ترین کاراکتر تکرارشونده Leftmost Repeating Character

  • چپ‌ترین عنصر غیرتکرارشونده Leftmost Non-repeating Element

  • معکوس کردن کلمات در یک رشته Reverse words in a string

  • مروری بر جستجوی الگو Overview of Pattern Searching

  • جستجوی الگوی ساده Naive Pattern Searching

  • جستجوی الگوی ساده بهبودیافته برای متمایز Improved Naive Pattern Searching for Distinct

  • الگوریتم رابین کارپ Rabin Karp Algorithm

  • الگوریتم KMP (قسمت 1: ساخت آرایه LPS) KMP Algorithm (Part 1 : Constructing LPS Array)

  • الگوریتم KMP (قسمت 2: الگوریتم کامل) KMP Algorithm (Part 2 : Complete Algorithm)

  • بررسی اینکه آیا رشته‌ها چرخش هستند Check if Strings are Rotations

  • جستجوی آناگرام Anagram Search

  • رتبه لغت‌نامه‌ای یک رشته Lexicographic Rank of a String

  • طولانی‌ترین زیررشته با کاراکترهای متمایز Longest Substring with Distinct Characters

لیست پیوندی LinkedList

  • مشکلات با ساختمان داده آرایه Problems With Array Data Structures

  • مقدمه لیست پیوندی Introduction to Linked List

  • پیاده‌سازی لیست پیوندی ساده در ++C Simple Linked List Implementation in C++

  • پیاده‌سازی لیست پیوندی ساده در جاوا Simple Linked List Implementation in Java

  • کاربردهای لیست پیوندی Applications of Linked List

  • پیمایش لیست پیوندی در ++C Traversing a Linked List in C++

  • پیمایش لیست پیوندی در جاوا Traversing a Linked List in Java

  • پیمایش بازگشتی لیست پیوندی یک طرفه Recursive Traversal of Singly Linked List

  • درج در ابتدای لیست پیوندی یک طرفه Insert at Begin of Singly Linked List

  • درج در انتهای لیست پیوندی یک طرفه Insert at the end of Singly Linked List

  • درج در موقعیت داده شده در لیست پیوندی یک طرفه Insert at given position in Singly Linked List

  • حذف گره اول لیست پیوندی یک طرفه Delete First Node of Singly Linked List

  • حذف آخرین گره لیست پیوندی یک طرفه Delete Last of Singly Linked List

  • جستجو در یک لیست پیوندی (تکراری و بازگشتی) Search in a Linked List (Iterative and Recursive)

  • لیست پیوندی دو طرفه در ++C Doubly Linked List in C++

  • لیست پیوندی دو طرفه در جاوا Doubly Linked List in Java

  • لیست پیوندی یک طرفه در مقابل دو طرفه (مزایا و معایب) Singly Vs Doubly Linked List (Advantages & Disadvantages)

  • درج در ابتدای لیست پیوندی دو طرفه Insert at Begin of Doubly Linked List

  • درج در انتهای لیست پیوندی دو طرفه Insert at End Doubly Linked List

  • معکوس کردن یک لیست پیوندی دو طرفه Reverse a Doubly Linked List

  • حذف سر لیست پیوندی دو طرفه Delete Head of a Doubly Linked List

  • حذف آخرین گره لیست پیوندی دو طرفه Delete Last of a Doubly Linked List

  • لیست پیوندی دایره‌ای در ++C Circular Linked List in C++

  • لیست پیوندی دایره‌ای در جاوا Circular Linked List in Java

  • لیست پیوندی دایره‌ای (مزایا و معایب) Circular Linked List (Advantages & Disadvantages)

  • پیمایش لیست پیوندی دایره‌ای در ++C Circular Linked List Traversal in C++

  • پیمایش لیست پیوندی دایره‌ای در جاوا Circular Linked List Traversal in Java

  • درج در ابتدای لیست پیوندی دایره‌ای Insert at Begin of Circular Linked List

  • درج در انتهای لیست پیوندی دایره‌ای Insert at the end of Circular Linked List

  • حذف سر لیست پیوندی دایره‌ای Delete Head of Circular Linked List

  • حذف K ام از یک لیست پیوندی دایره‌ای Delete Kth of a Circular Linked List

  • لیست پیوندی دایره‌ای دو طرفه Circular Doubly Linked List

  • درج مرتب شده در یک لیست پیوندی یک طرفه Sorted Insert in a Singly Linked List

  • میانه لیست پیوندی Middle of linked list

  • گره N ام از انتهای لیست پیوندی Nth Node from end of Linked List

  • معکوس کردن تکراری یک لیست پیوندی Reverse a linked list iterative

  • معکوس کردن بازگشتی یک لیست پیوندی (قسمت 1) Recursive reverse a linked list (Part 1)

  • معکوس کردن بازگشتی یک لیست پیوندی (قسمت 2) Recursive reverse a linked list (Part 2)

  • حذف موارد تکراری از یک لیست پیوندی یک طرفه مرتب شده Remove duplicates from a sorted Singly Linked List

  • معکوس کردن یک لیست پیوندی در گروه‌های اندازه k Reverse a linked list in groups of size k

  • تشخیص حلقه با استفاده از تشخیص چرخه فلوید Detect loop using floyd cycle detection

  • تشخیص و حذف حلقه در لیست پیوندی Detect and remove loop in linked list

  • حذف گره فقط با اشاره‌گر داده شده به آن Delete node with only pointer given to it

  • جدا کردن گره‌های زوج و فرد در ++C Segregate Even and Odd Nodes in C++

  • جدا کردن گره‌های زوج و فرد در جاوا Segregate Even and Odd Nodes in Java

  • نقطه تلاقی دو لیست پیوندی Intersection Point of two linked list

  • تعویض گره‌های لیست پیوندی به صورت دوتایی در ++C Pairwise Swap Nodes of linked list in C++

  • تعویض گره‌های لیست پیوندی به صورت دوتایی در جاوا Pairwise Swap Nodes of linked list in Java

  • شبیه‌سازی یک لیست پیوندی با اشاره‌گر تصادفی در ++C Clone a linked list with Random Pointer in C++

  • شبیه‌سازی یک لیست پیوندی با اشاره‌گر تصادفی در جاوا Clone a linked list with Random Pointer in Java

  • طراحی کش LRU LRU Cache Design

  • ادغام دو لیست پیوندی مرتب شده Merge two sorted linked lists

  • لیست پیوندی پالیندروم Palindrome Linked List

پشته Stack

  • ساختمان داده پشته Stack Data Structure

  • پیاده‌سازی آرایه پشته در ++C Array Implementation of Stack in C++

  • پیاده‌سازی آرایه پشته در جاوا Array Implementation of Stack in Java

  • پیاده‌سازی لیست پیوندی پشته در ++C Linked List Implementation of Stack in C++

  • پیاده‌سازی لیست پیوندی پشته در جاوا Linked List Implementation of Stack in Java

  • کاربردهای پشته Applications of Stack

  • پشته در ++C STL Stack in C++ STL

  • پشته در مجموعه جاوا Stack in Java Collection

  • پرانتز متعادل Balanced Parenthesis

  • پیاده‌سازی دو پشته در یک آرایه Implement two Stacks in an Array

  • پیاده‌سازی K پشته در یک آرایه در ++C Implement K Stacks in an Array in C++

  • پیاده‌سازی K پشته در یک آرایه در جاوا Implement K Stacks in an Array in Java

  • مسئله بازه سهام Stock span problem

  • عنصر بزرگتر قبلی Previous Greater Element

  • عنصر بزرگتر بعدی Next Greater Element

  • بزرگترین مساحت مستطیلی در یک هیستوگرام (قسمت 1) Largest Rectangular Area in a Histogram (Part 1)

  • بزرگترین مساحت مستطیلی در یک هیستوگرام (قسمت 2) Largest Rectangular Area in a Histogram (Part 2)

  • بزرگترین مستطیل با تمام 1ها Largest Rectangle with all 1's

  • پشته با getMin() در O(1) Stack with getMin() in O(1)

  • طراحی یک پشته با getMin() در فضای O(1) Design a Stack with getMin() in O(1) Space

  • مقدمه Infix، Prefix و Postfix Infix, Prefix and Postfix Introduction

  • Infix به Postfix (حل ساده) Infix to Postfix (Simple sol.)

  • Infix به Postfix (حل کارآمد) Infix to Postfix (Efficient Solution)

  • ارزیابی Postfix Evaluation of Postfix

  • Infix به Prefix (حل ساده) Infix to Prefix (Simple Solution)

  • Infix به Prefix (حل کارآمد) Infix to Prefix (Efficient Solution)

  • ارزیابی Prefix Evaluation of Prefix

صف Queue

  • ساختمان داده صف Queue Data Structure

  • کاربرد ساختمان داده صف Application of Queue Data structure

  • پیاده‌سازی صف با استفاده از آرایه Implementation of Queue using Array

  • پیاده‌سازی صف با استفاده از لیست پیوندی Implementation of Queue using Linked List

  • صف در ++C STL Queue in C++ STL

  • صف در جاوا Queue in Java

  • پیاده‌سازی پشته با استفاده از صف Implementing stack using queue

  • معکوس کردن یک صف Reversing a Queue

  • تولید اعداد با ارقام داده شده Generate numbers with given digits

Dequeue Dequeue

  • ساختمان داده Deque Deque Data Structure

  • پیاده‌سازی آرایه Deque Array Implementation of Deque

  • Deque در ++C STL Deque in C++ STL

  • Deque در جاوا Deque in Java

  • ArrayDeque در جاوا ArrayDeque in Java

  • طراحی یک ساختمان داده با عملیات Min و Max Design a Data Structure with Min and Max operations

  • حداکثرها از تمام زیرآرایه‌های اندازه k Maximums of all subarrays of size k

  • اولین تور دایره‌ای First Circular Tour

درخت Tree

  • ساختمان داده درخت Tree Data Structure

  • کاربرد درخت Application of Tree

  • درخت باینری Binary Tree

  • پیمایش درخت Tree Traversal

  • پیاده‌سازی پیمایش Inorder Implementation of Inorder Traversal

  • پیاده‌سازی پیمایش Preorder Implementation of Preorder Traversal

  • پیاده‌سازی پیمایش Postorder Implementation of Postorder Traversal

  • ارتفاع درخت باینری Height of Binary Tree

  • چاپ گره‌ها در فاصله K Print Nodes at K distance

  • پیمایش سطح به سطح Level Order Traversal

  • پیمایش سطح به سطح خط به خط (قسمت 1) Level Order Traversal Line by Line (Part 1)

  • پیمایش سطح به سطح خط به خط (قسمت 2) Level Order Traversal Line by Line (Part 2)

  • اندازه درخت باینری Size of Binary Tree

  • حداکثر در درخت باینری Maximum in Binary Tree

  • چاپ نمای چپ درخت باینری Print Left View of Binary Tree

  • ویژگی جمع فرزندان Children Sum Property

  • بررسی درخت باینری متوازن Check for Balanced Binary Tree

  • حداکثر عرض درخت باینری Maximum Width of Binary Tree

  • تبدیل درخت باینری به لیست پیوندی دو طرفه Convert Binary Tree to Doubly Linked List

  • ساخت درخت باینری از Inorder و Preorder Construct Binary Tree from Inorder and Preorder

  • پیمایش درخت به شکل مارپیچ Tree Traversal in Spiral Form

  • قطر یک درخت باینری Diameter of a Binary Tree

  • LCA درخت باینری (قسمت 1) LCA of Binary Tree (Part 1)

  • LCA درخت باینری (قسمت 2) LCA of Binary Tree (Part 2)

  • سوزاندن یک درخت باینری از یک برگ Burn a Binary Tree from a Leaf

  • شمارش گره‌ها در یک درخت باینری کامل Count Nodes in a Complete Binary Tree

  • سریال‌سازی و دی‌سریال‌سازی یک درخت باینری Serialize and Deserialize a Binary Tree

  • پیمایش Inorder تکراری Iterative Inorder Traversal

  • پیمایش Preorder تکراری Iterative Preorder Traversal

  • پیمایش Preorder تکراری (بهینه‌سازی فضا) Iterative Preorder Traversal (Space Optimized)

درخت جستجوی باینری Binary Search Tree

  • درخت جستجوی باینری (پیش‌زمینه) Binary Search Tree(Background)

  • درخت جستجوی باینری (مقدمه) Binary Search Tree(Introduction)

  • جستجو در BST (مقدمه) Search in BST (Introduction)

  • جستجو در BST ++C Search in BST C++

  • جستجو در BST جاوا Search in BST Java

  • درج در BST Insert in BST

  • درج در BST ++C Insert in BST C++

  • درج در BST جاوا Insert in BST Java

  • حذف در BST Deletion in BST

  • حذف BST در ++C BST deletion in C++

  • حذف BST در جاوا BST Deletion in Java

  • کف در BST Floor in BST

  • کف در BST در CPP Floor in BST in CPP

  • کف در BST جاوا Floor in BST Java

  • سقف در BST Ceil in BST

  • BST خودمتوازن Self Balancing BST

  • درخت AVL AVL Tree

  • درخت سیاه-قرمز Red Black Tree

  • کاربردهای BST Applications of BST

  • سقف در سمت چپ در یک آرایه Ceiling on left side in an array

  • یافتن K ام کوچکترین در BST Find Kth Smallest in BST

  • بررسی BST Check for BST

  • رفع BST با دو گره جابجا شده Fix BST with Two Nodes Swapped

  • مجموع جفت با BST داده شده Pair Sum with Given BST

  • مجموع عمودی در یک درخت باینری Vertical Sum in a Binary Tree

  • پیمایش عمودی درخت باینری Vertical Traversal of Binary Tree

  • نمای بالا از درخت باینری Top View of Binary Tree

  • نمای پایین از درخت باینری Bottom View of Binary Tree

هرم Heap

  • مقدمه هرم باینری Binary Heap Introduction

  • پیاده‌سازی هرم باینری Binary Heap Implementation

  • درج هرم باینری Binary Heap Insert

  • هرم باینری (Heapify و Extract) Binary Heap (Heapify and Extract)

  • هرم باینری (کاهش کلید، حذف و ساخت هرم) Binary Heap (Decrease Key, Delete and Build Heap)

  • مرتب‌سازی هرمی Heap Sort

  • صف اولویت در ++C Priority Queue in C++

  • PriorityQueue در جاوا PriorityQueue in Java

  • مرتب‌سازی آرایه K مرتب شده Sort K-Sorted Array

  • خرید حداکثر آیتم‌ها با مجموع داده شده Buy Maximum Items with Given Sum

  • K بزرگترین عناصر K Largest Elements

  • K نزدیکترین عناصر K Closest Elements

  • ادغام K آرایه مرتب شده Merge K Sorted Arrays

  • میانه یک جریان Median of a Stream

گراف Graph

  • مقدمه گراف Introduction to Graph

  • نمایش گراف (ماتریس مجاورت) Graph Representation (Adjacency Matrix)

  • نمایش گراف (لیست مجاورت) Graph Representation (Adjacency List)

  • پیاده‌سازی لیست مجاورت در CPP Adjacency List implementation in CPP

  • پیاده‌سازی لیست مجاورت در جاوا Adjacency List implementation in Java

  • مقایسه ماتریس و لیست مجاورت Adjacency Matrix and List Comparison

  • جستجوی اول سطح (BFS) Breadth First Search

  • کاربردهای BFS Applications of BFS

  • جستجوی اول عمق (DFS) Depth First Search

  • کاربردهای DFS Applications of DFS

  • کوتاهترین مسیر در گراف غیر وزن دار Shortest Path in an Unweighted Graph

  • تشخیص دور در گراف بدون جهت Detect Cycle in Undirected Graph

  • تشخیص دور در گراف جهت دار (بخش 1) Detect Cycle in a Directed Graph (Part 1)

  • مرتب سازی توپولوژیکی (الگوریتم مبتنی بر BFS کان) Topological Sorting (Kahn's BFS Based Algortihm)

  • تشخیص دور در گراف جهت دار (بخش 2) Detect Cycle in a Directed Graph (Part 2)

  • مرتب سازی توپولوژیکی (الگوریتم مبتنی بر DFS) Topological Sorting (DFS Based Algorithm)

  • کوتاهترین مسیر در گراف جهت دار غیر مدور (DAG) Shortest Path in DAG

  • الگوریتم پریم/درخت پوشای کمینه Prim's Algorithm/Minimum Spanning Tree

  • پیاده سازی الگوریتم پریم در C++ Implementation of Prim's Algorithm C++

  • پیاده سازی الگوریتم پریم در Java Implementation of Prim's Algorithm Java

  • الگوریتم دایجسترا برای کوتاهترین مسیر Dijkstra's Shortest Path Algorithm

  • پیاده سازی الگوریتم دایجسترا در C++ Implementation of Dijkstra's Algorithm C++

  • پیاده سازی الگوریتم دایجسترا در Java Implementation of Dijkstra's Algorithm Java

  • الگوریتم کسراجو بخش 1 Kosaraju's Algorithm Part 1

  • الگوریتم کسراجو بخش 2 Kosaraju's Algorithm Part 2

  • الگوریتم بلمن فورد برای کوتاهترین مسیر Bellman Ford Shortest Path Algorithm

  • نقطه مفصلی Articulation Point

  • پل ها در گراف Bridges in Graph

  • الگوریتم تارژان Tarjans Algorithm

  • الگوریتم کروسکال Kruskal's Algorithm

حریصانه Greedy

  • مقدمه ای بر الگوریتم های حریصانه Introduction to Greedy Algorithms

  • مسئله انتخاب فعالیت Activity Selection Problem

  • راه حل انتخاب فعالیت در C++ Activity Selection Solution in C++

  • راه حل انتخاب فعالیت در Java Activity Selection Solution in Java

  • مسئله کوله پشتی کسری Fractional Knapsack Problem

  • کوله پشتی کسری در C++ Fractional Knapsack in C++

  • کوله پشتی کسری در Java Fractional Knapsack in Java

  • مسئله ترتیب دهی شغل Job Sequencing Problem

  • کدگذاری هافمن (مقدمه) Huffman Coding (introduction)

  • الگوریتم های هافمن Huffman Algorithms

  • پیاده سازی CPP کدگذاری هافمن CPP Implementation of Huffman coding

  • پیاده سازی Java کدگذاری هافمن Java Implementation of Huffman coding

بازگشت به عقب (Backtracking) Backtracking

  • مفاهیم بازگشت به عقب Concepts of Backtracking

  • موش در ماز (Rat In a Maze) Rat In a Maze

  • مسئله N وزیر N Queen Problem

  • مسئله سودوکو Sudoku Problem

برنامه نویسی پویا (Dynamic Programming) Dynamic Programming

  • مقدمه ای بر DP Introduction to DP

  • یادداشت برداری در برنامه نویسی پویا Dynamic Programming Memoization

  • جدول بندی در برنامه نویسی پویا Dynamic Programming Tabulation

  • طولانی ترین زیردنباله مشترک (بخش 1) Longest Common Subsequence (Part 1)

  • طولانی ترین زیردنباله مشترک (بخش 2) Longest Common Subsequence (Part 2)

  • تغییرات LCS Variation of LCS

  • تغییر سکه (راه حل بازگشتی ساده) Coin Change (Naive Recursive Solution)

  • تغییر سکه (راه حل DP) Coin Change (DP Solution)

  • مسئله فاصله ویرایش Edit Distance Problem

  • راه حل DP مسئله فاصله ویرایش Edit Distance Problem DP solution

  • مسئله طولانی ترین زیردنباله صعودی Longest Increasing Subsequence Problem

  • طولانی ترین زیردنباله صعودی در O(nlogn) Longest Increasing Subsequence in O(nlogn)

  • تغییرات LIS (بخش 1) Variation of LIS (Part 1)

  • تغییرات LIS (بخش 2) Variations of LIS (Part 2)

  • حداکثر برش ها Maximum Cuts

  • حداقل سکه ها برای ساخت یک مقدار Minimum coins to make a value

  • حداقل پرش ها برای رسیدن به انتها Minimum Jumps to reach at end

  • مسئله کوله پشتی 0-1 0-1 knapsack problem

  • راه حل DP مسئله کوله پشتی 0-1 0-1 knapsack problem DP Solution

  • استراتژی بهینه برای یک بازی Optimal Strategy for a Game

  • پازل انداختن تخم مرغ - بخش 1 Egg Dropping Puzzle - Part 1

  • پازل انداختن تخم مرغ - بخش 2 Egg Dropping Puzzle - Part 2

  • شمارش BST ها با n کلید Count BSTs with n keys

  • حداکثر مجموع با دو عنصر متوالی Maximum sum with no two consecutive

  • مسئله جمع زیرمجموعه (راه حل بازگشتی) (متوسط) Subset Sum Problem (Recursive Solution) (Medium)

  • مسئله جمع زیرمجموعه (راه حل DP) (متوسط) Subset Sum Problem (DP Solution) (Medium)

  • ضرب زنجیره ماتریس Matrix Chain Multiplication

  • ضرب زنجیره ماتریس (راه حل DP) (سخت) Matrix Chain Multiplication (DP Solution) (Hard)

  • افراز پالیندروم Palindrome Partitioning

  • تخصیص حداقل صفحات (روش ساده) Allocate Minimum Pages (Naive Method)

  • تخصیص حداقل صفحات (راه حل DP) (سخت) Allocate Minimum Pages (DP Solution) (Hard)

درخت پیشوندی (Trie) Trie

  • ساختار داده درخت پیشوندی (مقدمه) Trie Data Structure (Introduction)

  • درخت پیشوندی (نمایش، جستجو و درج) Trie (Representation, Search and Insert)

  • حذف از درخت پیشوندی Trie Delete

  • شمارش ردیف های متمایز در یک ماتریس باینری Count Distinct Rows in a Binary Matrix

درخت های قطعه بندی و درخت های اندیس دار باینری Segment and Binary Indexed Trees

  • درخت قطعه بندی (مقدمه) Segment Tree (Introduction)

  • ساخت درخت قطعه بندی Constructing Segment Tree

  • پرس و جو دامنه در درخت قطعه بندی Range Query on Segment Tree

  • به روز رسانی پرس و جو در درخت قطعه بندی Update Query on Segment Tree

  • درخت اندیس دار باینری (مقدمه) Binary Indexed Tree (Intoduction)

  • درخت اندیس دار باینری (یک مثال) Binary Indexed Tree (An Example Problem)

  • درخت اندیس دار باینری (مجموع پیشوند) Binary Indexed Tree (Prefix Sum)

  • درخت اندیس دار باینری (پیاده سازی مجموع پیشوند) Binary Indexed Tree (Prefix Sum Implemention)

  • درخت اندیس دار باینری (عملکرد به روز رسانی) Binary Indexed Tree (Update Operation)

  • درخت اندیس دار باینری (ساخت) Binary Indexed Tree (Construction)

مجموعه های جدا از هم (Disjoint Set) Disjoint Set

  • مقدمه مجموعه های جدا از هم Disjoint Set Introduction

  • یافتن و ادغام عملیات در مجموعه های جدا از هم Find and Union Operations on Disjoint Sets

  • ادغام بر اساس رتبه Union by Rank

  • فشرده سازی مسیر Path Compression

  • الگوریتم کروسکال Kruskal's Algorithm

نمایش نظرات

آموزش دوره جامع ساختمان داده و الگوریتم - C++ و Java
جزییات دوره
81.5 hours
471
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
2,967
4.5 از 5
ندارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

GeeksforGeeks (GfG) GeeksforGeeks (GfG)

گیکز فور گیکز (GeeksforGeeks)