LeetCode

LeetCode

  • Problems
  • GitHub

›Problems

Problems

  • Two Sum
  • Add Two Numbers
  • Longest Substring Without Repeating Characters
  • Reverse Integer
  • String to Integer (atoi)
  • Palindrome Number
  • Longest Common Prefix
  • 3Sum
  • Remove Nth Node From End of List
  • Valid Parentheses
  • Merge Two Sorted Lists
  • Generate Parentheses
  • Merge k Sorted Lists
  • Remove Element
  • Next Permutation
  • Search in Rotated Sorted Array
  • Valid Sudoku
  • Group Anagrams
  • Maximum Subarray
  • Search a 2D Matrix
  • Binary Tree Level Order Traversal
  • Maximum Depth of Binary Tree
  • Balanced Binary Tree
  • Best Time to Buy and Sell Stock
  • Binary Tree Maximum Path Sum
  • Valid Palindrome
  • Word Ladder
  • Longest Consecutive Sequence
  • Palindrome Partitioning II
  • Linked List Cycle
  • Find Minimum in Rotated Sorted Array
  • Two Sum II - Input Array Is Sorted
  • Number of Islands
  • Reverse Linked List
  • Course Schedule II
  • Kth Largest Element in an Array
  • Contains Duplicate
  • Count Complete Tree Nodes
  • Invert Binary Tree
  • Valid Anagram
  • Find the Duplicate Number
  • Count of Smaller Numbers After Self
  • Longest Increasing Path in a Matrix
  • Top K Frequent Elements
  • Decode String
  • Longest Repeating Character Replacement
  • Max Consecutive Ones
  • Cracking the Safe
  • Binary Search
  • Design Circular Queue
  • Robot Room Cleaner
  • Peak Index in a Mountain Array
  • Fruit Into Baskets
  • Sort Array By Parity II
  • Unique Email Addresses
  • K Closest Points to Origin
  • Squares of a Sorted Array
  • Remove Vowels from a String
  • Optimize Water Distribution in a Village
  • Duplicate Zeros
  • Defanging an IP Address
  • Find Numbers with Even Number of Digits
  • Shuffle the Array
  • Running Sum of 1d Array
  • Number of Good Pairs
  • Richest Customer Wealth
  • Build Array from Permutation
  • Concatenation of Array
  • Final Value of Variable After Performing Operations
  • Maximum Number of Words Found in Sentences
  • Add Two Integers
  • Intersection of Two Arrays
  • Missing Number
  • Jewels and Stones
  • Find a Corresponding Node of a Binary Tree in a Clone of That Tree
  • Kids With the Greatest Number of Candies
  • Design Parking System
  • Minimum Sum of Four Digit Number After Splitting Digits
  • Root Equals Sum of Children
  • Plus One
  • Validate Binary Search Tree
  • Find Pivot Index
  • Largest Number At Least Twice of Others
  • Range Sum of BST
  • Subtract the Product and Sum of Digits of an Integer
  • How Many Numbers Are Smaller Than the Current Number

Word Ladder

Description

A transformation sequence from word beginWord to word endWord using a dictionary wordList is a sequence of words beginWord -> s1 -> s2 -> ... -> sk such that:

  • Every adjacent pair of words differs by a single letter.
  • Every si for 1 <= i <= k is in wordList. Note that beginWord does not need to be in wordList.
  • sk == endWord

Given two words, beginWord and endWord, and a dictionary wordList, return the number of words in the shortest transformation sequence from beginWord to endWord, or 0 if no such sequence exists.

 

Example 1:

Input: beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log","cog"]
Output: 5
Explanation: One shortest transformation sequence is "hit" -> "hot" -> "dot" -> "dog" -> cog", which is 5 words long.

Example 2:

Input: beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log"]
Output: 0
Explanation: The endWord "cog" is not in wordList, therefore there is no valid transformation sequence.

 

Constraints:

  • 1 <= beginWord.length <= 10
  • endWord.length == beginWord.length
  • 1 <= wordList.length <= 5000
  • wordList[i].length == beginWord.length
  • beginWord, endWord, and wordList[i] consist of lowercase English letters.
  • beginWord != endWord
  • All the words in wordList are unique.

Solution(javascript)

/**
 * @param {string} beginWord
 * @param {string} endWord
 * @param {string[]} wordList
 * @return {number}
 */
var ladderLength = function(beginWord, endWord, wordList) {
  var wordSet = new Set(wordList);
  var queue = [];
  var step = 0;
  var word = '';
  var len = 0;
  var i = 0;

  pushNextWord(beginWord, queue, wordSet);
  step = 2;

  while (len = queue.length) {
    for (i = 0; i < len; i++) {
      word = queue.shift();
      if (word === endWord) return step;
      pushNextWord(word, queue, wordSet);
    }
    step++;
  }

  return 0;
};

var pushNextWord = function (word, queue, wordSet) {
  var start = 'a'.charCodeAt(0);
  var len = word.length;
  var str = '';

  wordSet.delete(word);

  for (var i = 0; i < len; i++) {
    for (var j = 0; j < 26; j++) {
      str = word.substr(0, i) + String.fromCharCode(j + start) + word.substr(i + 1);

      if (wordSet.has(str)) {
        queue.push(str);
        wordSet.delete(str);
      }
    }
  }
};
← Valid PalindromeLongest Consecutive Sequence →
  • Description
  • Solution(javascript)
Powered By LeetCode Site Generator