Sure! Here are three easy-level DSA problems using Array, Linked List, and Map, along with their solutions in JavaScript.
1. Array Problem (Easy)
Problem: Find the Second Largest Element
Given an array of integers, find the second largest element in the array.
If there is no second largest element, return -1.
Example:
Input: arr = [10, 5, 20, 8] Output: 10 Input: arr = [7, 7, 7] Output: -1
Solution (JavaScript)
function secondLargest(arr) {
    if (arr.length < 2) return -1;
    let largest = -Infinity, secondLargest = -Infinity;
    for (let num of arr) {
        if (num > largest) {
            secondLargest = largest;
            largest = num;
        } else if (num > secondLargest && num < largest) {
            secondLargest = num;
        }
    }
    return secondLargest === -Infinity ? -1 : secondLargest;
}
// Test Cases
console.log(secondLargest([10, 5, 20, 8])); // Output: 10
console.log(secondLargest([7, 7, 7])); // Output: -1
console.log(secondLargest([3])); // Output: -1
Time Complexity: O(n)O(n)
2. Linked List Problem (Easy)
Problem: Find the Middle Node of a Linked List
Given a singly linked list, return the middle node.
If there are two middle nodes, return the second one.
Example:
Input: 1 → 2 → 3 → 4 → 5 Output: 3 Input: 1 → 2 → 3 → 4 → 5 → 6 Output: 4
Solution (JavaScript)
class ListNode {
    constructor(val) {
        this.val = val;
        this.next = null;
    }
}
function findMiddle(head) {
    let slow = head, fast = head;
    while (fast !== null && fast.next !== null) {
        slow = slow.next;  // Move slow one step
        fast = fast.next.next;  // Move fast two steps
    }
    return slow.val;
}
// Helper function to create a linked list
function createLinkedList(arr) {
    let head = new ListNode(arr[0]);
    let current = head;
    for (let i = 1; i < arr.length; i++) {
        current.next = new ListNode(arr[i]);
        current = current.next;
    }
    return head;
}
// Test Cases
let head1 = createLinkedList([1, 2, 3, 4, 5]);
console.log(findMiddle(head1)); // Output: 3
let head2 = createLinkedList([1, 2, 3, 4, 5, 6]);
console.log(findMiddle(head2)); // Output: 4
Time Complexity: O(n)O(n)
3. Map Problem (Easy)
Problem: Find First Non-Repeating Character
Given a string s, find the first non-repeating character and return its index.
If all characters repeat, return -1.
Example:
Input: "leetcode"
Output: 0  // ('l' is the first unique character)
Input: "aabb"
Output: -1  // (No unique character)
Solution (JavaScript)
function firstUniqueChar(s) {
    let charCount = new Map();
    // Count frequency of characters
    for (let char of s) {
        charCount.set(char, (charCount.get(char) || 0) + 1);
    }
    // Find the first unique character
    for (let i = 0; i < s.length; i++) {
        if (charCount.get(s[i]) === 1) return i;
    }
    return -1;
}
// Test Cases
console.log(firstUniqueChar("leetcode")); // Output: 0
console.log(firstUniqueChar("loveleetcode")); // Output: 2
console.log(firstUniqueChar("aabb")); // Output: -1
Time Complexity: O(n)O(n)
These problems are great for understanding Array, Linked List, and Map usage in JavaScript. Let me know if you need more! 🚀