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! 🚀