برنامه نویسی

تسلط بر دستکاری آرایه در DSA با استفاده از جاوا اسکریپت: از مبانی تا پیشرفته

Summarize this content to 400 words in Persian Lang

آرایه ها ساختارهای داده بنیادی در علوم کامپیوتر هستند و به طور گسترده در الگوریتم های مختلف و سناریوهای حل مسئله استفاده می شوند. این راهنمای جامع شما را با اصول دستکاری آرایه در جاوا اسکریپت آشنا می کند و موضوعاتی را از سطوح پایه تا پیشرفته پوشش می دهد. ما پیمایش، درج، حذف، جستجو و موارد دیگر را به همراه پیچیدگی‌های زمانی و مثال‌های عملی آن‌ها بررسی خواهیم کرد.

فهرست مطالب

مقدمه ای بر آرایه ها
پیمایش آرایه
درج در آرایه ها
حذف در آرایه ها
جستجو در آرایه ها
تکنیک های دستکاری آرایه پیشرفته
مشکلات تمرین
لینک های مشکل LeetCode

1. مقدمه ای بر آرایه ها

آرایه مجموعه ای از عناصر است که در مکان های حافظه به هم پیوسته ذخیره می شوند. در جاوا اسکریپت، آرایه ها پویا هستند و می توانند عناصر مختلفی را در خود جای دهند.

عملیات پایه آرایه:

// Creating an array
let arr = [1, 2, 3, 4, 5];

// Accessing elements
console.log(arr[0]); // Output: 1

// Modifying elements
arr[2] = 10;
console.log(arr); // Output: [1, 2, 10, 4, 5]

// Getting array length
console.log(arr.length); // Output: 5

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی:

عناصر دسترسی: O(1)
عناصر اصلاح کننده: O(1)
بدست آوردن طول آرایه: O(1)

2. پیمایش آرایه

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

2.1 استفاده از حلقه for

let arr = [1, 2, 3, 4, 5];
for (let i = 0; i arr.length; i++) {
console.log(arr[i]);
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)، که در آن n تعداد عناصر آرایه است.

2.2 استفاده از forEach

let arr = [1, 2, 3, 4, 5];
arr.forEach(element => console.log(element));

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

2.3 استفاده از حلقه برای…

let arr = [1, 2, 3, 4, 5];
for (let element of arr) {
console.log(element);
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

3. درج در آرایه ها

درج در آرایه ها می تواند در ابتدا، انتهای یا در یک موقعیت خاص انجام شود.

3.1 درج در انتها

let arr = [1, 2, 3];
arr.push(4);
console.log(arr); // Output: [1, 2, 3, 4]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(1) (استهلاک شده)

3.2 درج در ابتدا

let arr = [1, 2, 3];
arr.unshift(0);
console.log(arr); // Output: [0, 1, 2, 3]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)، زیرا تمام عناصر موجود باید جابجا شوند

3.3 درج در یک موقعیت خاص

let arr = [1, 2, 4, 5];
arr.splice(2, 0, 3);
console.log(arr); // Output: [1, 2, 3, 4, 5]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)، زیرا عناصر بعد از نقطه درج باید جابجا شوند

4. حذف در آرایه ها

مانند درج، حذف را می توان در ابتدا، پایان یا در یک موقعیت خاص انجام داد.

4.1 حذف از پایان

let arr = [1, 2, 3, 4];
arr.pop();
console.log(arr); // Output: [1, 2, 3]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(1)

4.2 حذف از ابتدا

let arr = [1, 2, 3, 4];
arr.shift();
console.log(arr); // Output: [2, 3, 4]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)، زیرا تمام عناصر باقی مانده باید جابجا شوند

4.3 حذف در یک موقعیت خاص

let arr = [1, 2, 3, 4, 5];
arr.splice(2, 1);
console.log(arr); // Output: [1, 2, 4, 5]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)، زیرا عناصر بعد از نقطه حذف باید جابجا شوند

5. جستجو در آرایه ها

جستجو یک عملیات معمولی است که روی آرایه ها انجام می شود. بیایید به چند تکنیک جستجو نگاه کنیم.

5.1 جستجوی خطی

function linearSearch(arr, target) {
for (let i = 0; i arr.length; i++) {
if (arr[i] === target) return i;
}
return -1;
}

let arr = [1, 3, 5, 7, 9];
console.log(linearSearch(arr, 5)); // Output: 2
console.log(linearSearch(arr, 6)); // Output: -1

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

5.2 جستجوی باینری (برای آرایه های مرتب شده)

function binarySearch(arr, target) {
let left = 0, right = arr.length – 1;
while (left right) {
let mid = Math.floor((left + right) / 2);
if (arr[mid] === target) return mid;
if (arr[mid] target) left = mid + 1;
else right = mid – 1;
}
return -1;
}

let arr = [1, 3, 5, 7, 9];
console.log(binarySearch(arr, 5)); // Output: 2
console.log(binarySearch(arr, 6)); // Output: -1

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O (log n)

6. تکنیک های دستکاری آرایه پیشرفته

حالا بیایید چند تکنیک پیشرفته تر برای دستکاری آرایه ها را بررسی کنیم.

6.1 تکنیک دو نقطه

تکنیک دو نقطه ای اغلب برای حل موثر مسائل آرایه استفاده می شود. در اینجا مثالی از استفاده از دو نشانگر برای معکوس کردن یک آرایه در محل آورده شده است:

function reverseArray(arr) {
let left = 0, right = arr.length – 1;
while (left right) {
[arr[left], arr[right]] = [arr[right], arr[left]];
left++;
right–;
}
}

let arr = [1, 2, 3, 4, 5];
reverseArray(arr);
console.log(arr); // Output: [5, 4, 3, 2, 1]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

6.2 تکنیک پنجره کشویی

تکنیک پنجره کشویی برای حل مسائل زیرآرایه مفید است. در اینجا یک مثال برای یافتن زیرآرایه حداکثر جمع با اندازه k آورده شده است:

function maxSumSubarray(arr, k) {
let maxSum = 0;
let windowSum = 0;

// Calculate sum of first window
for (let i = 0; i k; i++) {
windowSum += arr[i];
}
maxSum = windowSum;

// Slide the window
for (let i = k; i arr.length; i++) {
windowSum = windowSum – arr[i – k] + arr[i];
maxSum = Math.max(maxSum, windowSum);
}

return maxSum;
}

let arr = [1, 4, 2, 10, 23, 3, 1, 0, 20];
console.log(maxSumSubarray(arr, 4)); // Output: 39

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

6.3 الگوریتم کادان

الگوریتم Kadane برای یافتن حداکثر مجموع زیرآرایه در یک آرایه استفاده می شود. این نمونه ای از برنامه نویسی پویا است:

function kadane(arr) {
let maxSoFar = arr[0];
let maxEndingHere = arr[0];

for (let i = 1; i arr.length; i++) {
maxEndingHere = Math.max(arr[i], maxEndingHere + arr[i]);
maxSoFar = Math.max(maxSoFar, maxEndingHere);
}

return maxSoFar;
}

let arr = [-2, -3, 4, -1, -2, 1, 5, -3];
console.log(kadane(arr)); // Output: 7

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

6.4 الگوریتم پرچم ملی هلند

این الگوریتم برای مرتب‌سازی آرایه‌ای که فقط حاوی 0، 1 و 2 است، استفاده می‌شود:

function dutchNationalFlag(arr) {
let low = 0, mid = 0, high = arr.length – 1;

while (mid high) {
if (arr[mid] === 0) {
[arr[low], arr[mid]] = [arr[mid], arr[low]];
low++;
mid++;
} else if (arr[mid] === 1) {
mid++;
} else {
[arr[mid], arr[high]] = [arr[high], arr[mid]];
high–;
}
}
}

let arr = [2, 0, 1, 2, 1, 0];
dutchNationalFlag(arr);
console.log(arr); // Output: [0, 0, 1, 1, 2, 2]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

7. تمرین مشکلات

در اینجا 50 مشکل تمرینی از سطوح آسان تا پیشرفته آورده شده است. برخی از اینها از LeetCode هستند، در حالی که برخی دیگر سناریوهای دستکاری آرایه رایج هستند:

مجموع تمام عناصر در یک آرایه
حداکثر عنصر را در یک آرایه پیدا کنید
معکوس کردن یک آرایه در محل
موارد تکراری را از یک آرایه مرتب شده حذف کنید
یک آرایه را با k گام بچرخانید
دومین عنصر بزرگ در یک آرایه را پیدا کنید
دو آرایه مرتب شده را ادغام کنید
عدد گم شده را در آرایه 1 تا n پیدا کنید
تمام صفرها را به انتهای آرایه منتقل کنید
محل تلاقی دو آرایه را پیدا کنید
اتحاد دو آرایه را پیدا کنید
بررسی کنید که آیا یک آرایه زیرمجموعه ای از آرایه دیگر است یا خیر
شاخص تعادل را در یک آرایه پیدا کنید
اعداد مثبت و منفی را در یک آرایه مرتب کنید
عنصر اکثریت را در یک آرایه پیدا کنید
عنصر پیک را در یک آرایه پیدا کنید
یک آرایه دایره ای را پیاده سازی کنید
کوچکترین عدد گمشده مثبت در یک آرایه را پیدا کنید
مشکل آب باران به دام انداختن
یک پشته را با استفاده از یک آرایه پیاده سازی کنید
یک صف را با استفاده از یک آرایه پیاده سازی کنید
طولانی ترین دنباله افزایشی را پیدا کنید
پیاده سازی جستجوی دودویی در یک آرایه مرتب شده چرخشی
حداکثر مجموع یک زیرآرایه به اندازه k را پیدا کنید
پیاده سازی الگوریتم Kadane
حداقل تعداد سکوهای مورد نیاز برای یک ایستگاه راه آهن را بیابید
طولانی ترین زیرآرایه را با تعداد مساوی 0 و 1 پیدا کنید
پیاده سازی الگوریتم پرچم ملی هلند
کوچکترین زیرآرایه را با مجموع بیشتر از مقدار داده شده پیدا کنید
الگوریتم رای اکثریت بویر مور را اجرا کنید
حداکثر زیر مجموعه محصول را پیدا کنید
الگوریتم Jump Game را پیاده سازی کنید
عنصر بزرگتر بعدی را برای هر عنصر در یک آرایه پیدا کنید
الگوریتم Sliding Window Maximum را پیاده سازی کنید
طولانی ترین رشته فرعی را بدون تکرار کاراکترها پیدا کنید
الگوریتم Merge Intervals را پیاده سازی کنید
حداقل تعداد پرش ها را برای رسیدن به انتهای یک آرایه پیدا کنید
الگوریتم خرید سهام را برای به حداکثر رساندن سود پیاده سازی کنید
طولانی ترین زیر رشته پالیندرومیک را پیدا کنید
الگوریتم Longest Common Subsequence را پیاده سازی کنید
کوتاهترین زیرآرایه پیوسته مرتب نشده را پیدا کنید
الگوریتم Container With Most Water را پیاده سازی کنید
طولانی ترین دنباله متوالی را در یک آرایه پیدا کنید
الگوریتم حداکثر حاصلضرب سه عدد را پیاده سازی کنید
Kth بزرگترین عنصر در یک آرایه را پیدا کنید
الگوریتم Find All Duplicates را در یک آرایه پیاده سازی کنید
حداقل اندازه سابرای مجموع را پیدا کنید
الگوریتم Product of Array Except Self را پیاده سازی کنید
حداکثر فاصله را در یک آرایه مرتب شده پیدا کنید
الگوریتم میانه دو آرایه مرتب شده را پیاده سازی کنید

8. لینک های مشکل LeetCode

در اینجا 20 مشکل LeetCode برای آزمایش مهارت های دستکاری آرایه آورده شده است:

دو مجموع
بهترین زمان برای خرید و فروش سهام
حاوی تکراری
محصول آرایه به جز خود
حداکثر سابرای
فواصل ادغام
3 جمع
ظرف با بیشترین آب
چرخش آرایه
جستجو در آرایه مرتب شده چرخشی
حداقل را در آرایه مرتب شده چرخشی پیدا کنید
جایگشت بعدی
جمع سابرای برابر با K است
ماتریس مارپیچی
بازی پرش
طولانی ترین سکانس متوالی
همه موارد تکراری را در یک آرایه پیدا کنید
Kth بزرگترین عنصر در یک آرایه
به دام انداختن آب باران
میانه دو آرایه مرتب شده

با کار بر روی این مشکلات و درک مفاهیم اساسی، مهارت های دستکاری آرایه خود را در جاوا اسکریپت برای ساختارهای داده و الگوریتم ها به طور قابل توجهی بهبود خواهید داد.

به یاد داشته باشید، کلید تسلط بر این تکنیک ها، تمرین مداوم و درک پیچیدگی های زمانی و مکانی راه حل های شما است.

کد نویسی مبارک!

آرایه ها ساختارهای داده بنیادی در علوم کامپیوتر هستند و به طور گسترده در الگوریتم های مختلف و سناریوهای حل مسئله استفاده می شوند. این راهنمای جامع شما را با اصول دستکاری آرایه در جاوا اسکریپت آشنا می کند و موضوعاتی را از سطوح پایه تا پیشرفته پوشش می دهد. ما پیمایش، درج، حذف، جستجو و موارد دیگر را به همراه پیچیدگی‌های زمانی و مثال‌های عملی آن‌ها بررسی خواهیم کرد.

فهرست مطالب

  1. مقدمه ای بر آرایه ها
  2. پیمایش آرایه
  3. درج در آرایه ها
  4. حذف در آرایه ها
  5. جستجو در آرایه ها
  6. تکنیک های دستکاری آرایه پیشرفته
  7. مشکلات تمرین
  8. لینک های مشکل LeetCode

1. مقدمه ای بر آرایه ها

آرایه مجموعه ای از عناصر است که در مکان های حافظه به هم پیوسته ذخیره می شوند. در جاوا اسکریپت، آرایه ها پویا هستند و می توانند عناصر مختلفی را در خود جای دهند.

عملیات پایه آرایه:

// Creating an array
let arr = [1, 2, 3, 4, 5];

// Accessing elements
console.log(arr[0]); // Output: 1

// Modifying elements
arr[2] = 10;
console.log(arr); // Output: [1, 2, 10, 4, 5]

// Getting array length
console.log(arr.length); // Output: 5
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی:

  • عناصر دسترسی: O(1)
  • عناصر اصلاح کننده: O(1)
  • بدست آوردن طول آرایه: O(1)

2. پیمایش آرایه

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

2.1 استفاده از حلقه for

let arr = [1, 2, 3, 4, 5];
for (let i = 0; i  arr.length; i++) {
    console.log(arr[i]);
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)، که در آن n تعداد عناصر آرایه است.

2.2 استفاده از forEach

let arr = [1, 2, 3, 4, 5];
arr.forEach(element => console.log(element));
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

2.3 استفاده از حلقه برای…

let arr = [1, 2, 3, 4, 5];
for (let element of arr) {
    console.log(element);
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

3. درج در آرایه ها

درج در آرایه ها می تواند در ابتدا، انتهای یا در یک موقعیت خاص انجام شود.

3.1 درج در انتها

let arr = [1, 2, 3];
arr.push(4);
console.log(arr); // Output: [1, 2, 3, 4]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(1) (استهلاک شده)

3.2 درج در ابتدا

let arr = [1, 2, 3];
arr.unshift(0);
console.log(arr); // Output: [0, 1, 2, 3]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)، زیرا تمام عناصر موجود باید جابجا شوند

3.3 درج در یک موقعیت خاص

let arr = [1, 2, 4, 5];
arr.splice(2, 0, 3);
console.log(arr); // Output: [1, 2, 3, 4, 5]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)، زیرا عناصر بعد از نقطه درج باید جابجا شوند

4. حذف در آرایه ها

مانند درج، حذف را می توان در ابتدا، پایان یا در یک موقعیت خاص انجام داد.

4.1 حذف از پایان

let arr = [1, 2, 3, 4];
arr.pop();
console.log(arr); // Output: [1, 2, 3]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(1)

4.2 حذف از ابتدا

let arr = [1, 2, 3, 4];
arr.shift();
console.log(arr); // Output: [2, 3, 4]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)، زیرا تمام عناصر باقی مانده باید جابجا شوند

4.3 حذف در یک موقعیت خاص

let arr = [1, 2, 3, 4, 5];
arr.splice(2, 1);
console.log(arr); // Output: [1, 2, 4, 5]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)، زیرا عناصر بعد از نقطه حذف باید جابجا شوند

5. جستجو در آرایه ها

جستجو یک عملیات معمولی است که روی آرایه ها انجام می شود. بیایید به چند تکنیک جستجو نگاه کنیم.

5.1 جستجوی خطی

function linearSearch(arr, target) {
    for (let i = 0; i  arr.length; i++) {
        if (arr[i] === target) return i;
    }
    return -1;
}

let arr = [1, 3, 5, 7, 9];
console.log(linearSearch(arr, 5)); // Output: 2
console.log(linearSearch(arr, 6)); // Output: -1
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

5.2 جستجوی باینری (برای آرایه های مرتب شده)

function binarySearch(arr, target) {
    let left = 0, right = arr.length - 1;
    while (left  right) {
        let mid = Math.floor((left + right) / 2);
        if (arr[mid] === target) return mid;
        if (arr[mid]  target) left = mid + 1;
        else right = mid - 1;
    }
    return -1;
}

let arr = [1, 3, 5, 7, 9];
console.log(binarySearch(arr, 5)); // Output: 2
console.log(binarySearch(arr, 6)); // Output: -1
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O (log n)

6. تکنیک های دستکاری آرایه پیشرفته

حالا بیایید چند تکنیک پیشرفته تر برای دستکاری آرایه ها را بررسی کنیم.

6.1 تکنیک دو نقطه

تکنیک دو نقطه ای اغلب برای حل موثر مسائل آرایه استفاده می شود. در اینجا مثالی از استفاده از دو نشانگر برای معکوس کردن یک آرایه در محل آورده شده است:

function reverseArray(arr) {
    let left = 0, right = arr.length - 1;
    while (left  right) {
        [arr[left], arr[right]] = [arr[right], arr[left]];
        left++;
        right--;
    }
}

let arr = [1, 2, 3, 4, 5];
reverseArray(arr);
console.log(arr); // Output: [5, 4, 3, 2, 1]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

6.2 تکنیک پنجره کشویی

تکنیک پنجره کشویی برای حل مسائل زیرآرایه مفید است. در اینجا یک مثال برای یافتن زیرآرایه حداکثر جمع با اندازه k آورده شده است:

function maxSumSubarray(arr, k) {
    let maxSum = 0;
    let windowSum = 0;

    // Calculate sum of first window
    for (let i = 0; i  k; i++) {
        windowSum += arr[i];
    }
    maxSum = windowSum;

    // Slide the window
    for (let i = k; i  arr.length; i++) {
        windowSum = windowSum - arr[i - k] + arr[i];
        maxSum = Math.max(maxSum, windowSum);
    }

    return maxSum;
}

let arr = [1, 4, 2, 10, 23, 3, 1, 0, 20];
console.log(maxSumSubarray(arr, 4)); // Output: 39
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

6.3 الگوریتم کادان

الگوریتم Kadane برای یافتن حداکثر مجموع زیرآرایه در یک آرایه استفاده می شود. این نمونه ای از برنامه نویسی پویا است:

function kadane(arr) {
    let maxSoFar = arr[0];
    let maxEndingHere = arr[0];

    for (let i = 1; i  arr.length; i++) {
        maxEndingHere = Math.max(arr[i], maxEndingHere + arr[i]);
        maxSoFar = Math.max(maxSoFar, maxEndingHere);
    }

    return maxSoFar;
}

let arr = [-2, -3, 4, -1, -2, 1, 5, -3];
console.log(kadane(arr)); // Output: 7
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

6.4 الگوریتم پرچم ملی هلند

این الگوریتم برای مرتب‌سازی آرایه‌ای که فقط حاوی 0، 1 و 2 است، استفاده می‌شود:

function dutchNationalFlag(arr) {
    let low = 0, mid = 0, high = arr.length - 1;

    while (mid  high) {
        if (arr[mid] === 0) {
            [arr[low], arr[mid]] = [arr[mid], arr[low]];
            low++;
            mid++;
        } else if (arr[mid] === 1) {
            mid++;
        } else {
            [arr[mid], arr[high]] = [arr[high], arr[mid]];
            high--;
        }
    }
}

let arr = [2, 0, 1, 2, 1, 0];
dutchNationalFlag(arr);
console.log(arr); // Output: [0, 0, 1, 1, 2, 2]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیچیدگی زمانی: O(n)

7. تمرین مشکلات

در اینجا 50 مشکل تمرینی از سطوح آسان تا پیشرفته آورده شده است. برخی از اینها از LeetCode هستند، در حالی که برخی دیگر سناریوهای دستکاری آرایه رایج هستند:

  1. مجموع تمام عناصر در یک آرایه
  2. حداکثر عنصر را در یک آرایه پیدا کنید
  3. معکوس کردن یک آرایه در محل
  4. موارد تکراری را از یک آرایه مرتب شده حذف کنید
  5. یک آرایه را با k گام بچرخانید
  6. دومین عنصر بزرگ در یک آرایه را پیدا کنید
  7. دو آرایه مرتب شده را ادغام کنید
  8. عدد گم شده را در آرایه 1 تا n پیدا کنید
  9. تمام صفرها را به انتهای آرایه منتقل کنید
  10. محل تلاقی دو آرایه را پیدا کنید
  11. اتحاد دو آرایه را پیدا کنید
  12. بررسی کنید که آیا یک آرایه زیرمجموعه ای از آرایه دیگر است یا خیر
  13. شاخص تعادل را در یک آرایه پیدا کنید
  14. اعداد مثبت و منفی را در یک آرایه مرتب کنید
  15. عنصر اکثریت را در یک آرایه پیدا کنید
  16. عنصر پیک را در یک آرایه پیدا کنید
  17. یک آرایه دایره ای را پیاده سازی کنید
  18. کوچکترین عدد گمشده مثبت در یک آرایه را پیدا کنید
  19. مشکل آب باران به دام انداختن
  20. یک پشته را با استفاده از یک آرایه پیاده سازی کنید
  21. یک صف را با استفاده از یک آرایه پیاده سازی کنید
  22. طولانی ترین دنباله افزایشی را پیدا کنید
  23. پیاده سازی جستجوی دودویی در یک آرایه مرتب شده چرخشی
  24. حداکثر مجموع یک زیرآرایه به اندازه k را پیدا کنید
  25. پیاده سازی الگوریتم Kadane
  26. حداقل تعداد سکوهای مورد نیاز برای یک ایستگاه راه آهن را بیابید
  27. طولانی ترین زیرآرایه را با تعداد مساوی 0 و 1 پیدا کنید
  28. پیاده سازی الگوریتم پرچم ملی هلند
  29. کوچکترین زیرآرایه را با مجموع بیشتر از مقدار داده شده پیدا کنید
  30. الگوریتم رای اکثریت بویر مور را اجرا کنید
  31. حداکثر زیر مجموعه محصول را پیدا کنید
  32. الگوریتم Jump Game را پیاده سازی کنید
  33. عنصر بزرگتر بعدی را برای هر عنصر در یک آرایه پیدا کنید
  34. الگوریتم Sliding Window Maximum را پیاده سازی کنید
  35. طولانی ترین رشته فرعی را بدون تکرار کاراکترها پیدا کنید
  36. الگوریتم Merge Intervals را پیاده سازی کنید
  37. حداقل تعداد پرش ها را برای رسیدن به انتهای یک آرایه پیدا کنید
  38. الگوریتم خرید سهام را برای به حداکثر رساندن سود پیاده سازی کنید
  39. طولانی ترین زیر رشته پالیندرومیک را پیدا کنید
  40. الگوریتم Longest Common Subsequence را پیاده سازی کنید
  41. کوتاهترین زیرآرایه پیوسته مرتب نشده را پیدا کنید
  42. الگوریتم Container With Most Water را پیاده سازی کنید
  43. طولانی ترین دنباله متوالی را در یک آرایه پیدا کنید
  44. الگوریتم حداکثر حاصلضرب سه عدد را پیاده سازی کنید
  45. Kth بزرگترین عنصر در یک آرایه را پیدا کنید
  46. الگوریتم Find All Duplicates را در یک آرایه پیاده سازی کنید
  47. حداقل اندازه سابرای مجموع را پیدا کنید
  48. الگوریتم Product of Array Except Self را پیاده سازی کنید
  49. حداکثر فاصله را در یک آرایه مرتب شده پیدا کنید
  50. الگوریتم میانه دو آرایه مرتب شده را پیاده سازی کنید

8. لینک های مشکل LeetCode

در اینجا 20 مشکل LeetCode برای آزمایش مهارت های دستکاری آرایه آورده شده است:

  1. دو مجموع
  2. بهترین زمان برای خرید و فروش سهام
  3. حاوی تکراری
  4. محصول آرایه به جز خود
  5. حداکثر سابرای
  6. فواصل ادغام
  7. 3 جمع
  8. ظرف با بیشترین آب
  9. چرخش آرایه
  10. جستجو در آرایه مرتب شده چرخشی
  11. حداقل را در آرایه مرتب شده چرخشی پیدا کنید
  12. جایگشت بعدی
  13. جمع سابرای برابر با K است
  14. ماتریس مارپیچی
  15. بازی پرش
  16. طولانی ترین سکانس متوالی
  17. همه موارد تکراری را در یک آرایه پیدا کنید
  18. Kth بزرگترین عنصر در یک آرایه
  19. به دام انداختن آب باران
  20. میانه دو آرایه مرتب شده

با کار بر روی این مشکلات و درک مفاهیم اساسی، مهارت های دستکاری آرایه خود را در جاوا اسکریپت برای ساختارهای داده و الگوریتم ها به طور قابل توجهی بهبود خواهید داد.

به یاد داشته باشید، کلید تسلط بر این تکنیک ها، تمرین مداوم و درک پیچیدگی های زمانی و مکانی راه حل های شما است.

کد نویسی مبارک!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا