Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Home
Talentd Logo
Talentd

Your trusted platform to ace any job interviews, craft the perfect resumes, and land your dream jobs.

P
Featured on
Product Hunt
â–²455
All services are online

Products

  • Resume Review
  • Company Prep Pack
  • DSA Corner
  • Jobs
  • Internships
  • Fresher Jobs
  • Roadmaps
  • Tax Calculator

Resources

  • Articles
  • DRDO Internships

Support

  • Contact Us

DSA & Interview Prep

  • DSA Questions
  • DSA Sheets
  • Company Questions
  • Topics

Company

  • Companies Hiring
  • About
  • Contact
  • Advertisement

Legal

  • Privacy Policy
  • Terms & Conditions
  • Refund Policy
  • Delivery Policy

Popular Skills

Browse All Skills →

Popular Tags

Browse All Tags →

© 2025 Talentd.in - All rights reserved

Privacy PolicyTerms & Conditions
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
DSA Corner
DashboardQuestionsTopicsCompaniesSheets

Talentd Logo
Talentd

Your trusted platform to ace any job interviews, craft the perfect resumes, and land your dream jobs.

P
Featured on
Product Hunt
â–²455
All services are online

Products

  • Resume Review
  • Company Prep Pack
  • DSA Corner
  • Jobs
  • Internships
  • Fresher Jobs
  • Roadmaps
  • Tax Calculator

Resources

  • Articles
  • DRDO Internships

Support

  • Contact Us

DSA & Interview Prep

  • DSA Questions
  • DSA Sheets
  • Company Questions
  • Topics

Company

  • Companies Hiring
  • About
  • Contact
  • Advertisement

Legal

  • Privacy Policy
  • Terms & Conditions
  • Refund Policy
  • Delivery Policy

Popular Skills

Browse All Skills →

Popular Tags

Browse All Tags →

© 2025 Talentd.in - All rights reserved

Privacy PolicyTerms & Conditions
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
DSA Corner
DashboardQuestionsTopicsCompaniesSheets
Talentd Logo
Talentd

Your trusted platform to ace any job interviews, craft the perfect resumes, and land your dream jobs.

P
Featured on
Product Hunt
â–²455
All services are online

Products

  • Resume Review
  • Company Prep Pack
  • DSA Corner
  • Jobs
  • Internships
  • Fresher Jobs
  • Roadmaps
  • Tax Calculator

Resources

  • Articles
  • DRDO Internships

Support

  • Contact Us

DSA & Interview Prep

  • DSA Questions
  • DSA Sheets
  • Company Questions
  • Topics

Company

  • Companies Hiring
  • About
  • Contact
  • Advertisement

Legal

  • Privacy Policy
  • Terms & Conditions
  • Refund Policy
  • Delivery Policy

Popular Skills

Browse All Skills →

Popular Tags

Browse All Tags →

© 2025 Talentd.in - All rights reserved

Privacy PolicyTerms & Conditions
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
DSA Corner
DashboardQuestionsTopicsCompaniesSheets
Talentd Logo
Talentd

Your trusted platform to ace any job interviews, craft the perfect resumes, and land your dream jobs.

P
Featured on
Product Hunt
â–²455
All services are online

Products

  • Resume Review
  • Company Prep Pack
  • DSA Corner
  • Jobs
  • Internships
  • Fresher Jobs
  • Roadmaps
  • Tax Calculator

Resources

  • Articles
  • DRDO Internships

Support

  • Contact Us

DSA & Interview Prep

  • DSA Questions
  • DSA Sheets
  • Company Questions
  • Topics

Company

  • Companies Hiring
  • About
  • Contact
  • Advertisement

Legal

  • Privacy Policy
  • Terms & Conditions
  • Refund Policy
  • Delivery Policy

Popular Skills

Browse All Skills →

Popular Tags

Browse All Tags →

© 2025 Talentd.in - All rights reserved

Privacy PolicyTerms & Conditions
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
DSA Corner
DashboardQuestionsTopicsCompaniesSheets
Back to Problems

773. Sliding Puzzle

Hard72.8% Acceptance
ArrayDynamic ProgrammingBacktracking
Asked by:
T
TikTok
ProblemHints (1)Solutions (4)VideosCompanies (4)Notes

Problem Statement

On an 2 x 3 board, there are five tiles labeled from 1 to 5, and an empty square represented by 0. A move consists of choosing 0 and a 4-directionally adjacent number and swapping it.

The state of the board is solved if and only if the board is [[1,2,3],[4,5,0]].

Given the puzzle board board, return the least number of moves required so that the state of the board is solved. If it is impossible for the state of the board to be solved, return -1.

Example 1:

Input: board = [[1,2,3],[4,0,5]]
Output: 1
Explanation: Swap the 0 and the 5 in one move.

Example 2:

Input: board = [[1,2,3],[5,4,0]]
Output: -1
Explanation: No number of moves will make the board solved.

Example 3:

Input: board = [[4,1,2],[5,0,3]]
Output: 5
Explanation: 5 is the smallest number of moves that solves the board.
An example path:
After move 0: [[4,1,2],[5,0,3]]
After move 1: [[4,1,2],[0,5,3]]
After move 2: [[0,1,2],[4,5,3]]
After move 3: [[1,0,2],[4,5,3]]
After move 4: [[1,2,0],[4,5,3]]
After move 5: [[1,2,3],[4,5,0]]

Constraints:

  • board.length == 2
  • board[i].length == 3
  • 0 <= board[i][j] <= 5
  • Each value board[i][j] is unique.
Talentd Logo
Talentd

Your trusted platform to ace any job interviews, craft the perfect resumes, and land your dream jobs.

P
Featured on
Product Hunt
â–²455
All services are online

Products

  • Resume Review
  • Company Prep Pack
  • DSA Corner
  • Jobs
  • Internships
  • Fresher Jobs
  • Roadmaps
  • Tax Calculator

Resources

  • Articles
  • DRDO Internships

Support

  • Contact Us

DSA & Interview Prep

  • DSA Questions
  • DSA Sheets
  • Company Questions
  • Topics

Company

  • Companies Hiring
  • About
  • Contact
  • Advertisement

Legal

  • Privacy Policy
  • Terms & Conditions
  • Refund Policy
  • Delivery Policy

Popular Skills

Browse All Skills →

Popular Tags

Browse All Tags →

© 2025 Talentd.in - All rights reserved

Privacy PolicyTerms & Conditions
A
Amazon
U
Uber
A
Airbnb

Approach

The Sliding Puzzle problem asks you to determine the minimum number of moves required to reach a target board configuration by sliding tiles into the empty space. The key idea is to treat each board configuration as a state and explore all reachable states until the target configuration is found.

A common strategy is to model the puzzle as a graph and apply Breadth-First Search (BFS). Convert the board into a compact representation such as a string, which allows easy comparison and storage in a visited set. From each state, generate new states by swapping the blank tile with its valid neighbors. BFS guarantees the shortest path because it explores configurations level by level.

For optimization, predefine neighbor indices of the blank tile to quickly generate transitions. Since the puzzle size is fixed (e.g., 2×3 board), the total number of possible permutations is limited. BFS combined with memoization of visited states efficiently avoids repeated exploration.

Time Complexity: approximately O(N!) for all possible permutations of tiles, but bounded for small boards. Space Complexity: O(N!) to store visited states and the BFS queue.

Complexity

ApproachTime ComplexitySpace Complexity
Breadth-First Search with state encodingO(N!)O(N!)
A* Search (heuristic optimization)O(N!) worst case, often faster in practiceO(N!)

Video Solution Available

code_report

View all video solutions

Problem Hints

Use these hints if you're stuck. Try solving on your own first.

1
Hint 1

Perform a breadth-first-search, where the nodes are the puzzle boards and edges are if two puzzle boards can be transformed into one another with one move.

Ready to see the solutions?View Solutions

Solutions (4)

Breadth-First Search (BFS) Approach

The BFS approach performs a level-order traversal beginning from the initial board state, ensuring that the shortest path is found. Each state is enqueued with its move count, and dequeue states expand via possible '0' swaps. Unvisited states are tracked for efficiency.

Time Complexity: O(1) - There are a constant number of states (720) due to permutation limits.
Space Complexity: O(1) - As with time, space usage peaks at 720 given state permutations.

PythonC#
1from collections import deque
2
3def sliding_puzzle(board):
4    start = ''.join(str(num) for row in board for num in row)
5    target = '123450'
6    neighbors = {
7        0: [1, 3],
8        1: [0, 2, 4],
9        2: [1, 5],
10        3: [0, 4],
11        4: [3, 1, 5],
12        5: [2, 4]
13    }
14    queue = deque([(start, start.index('0'), 0)]) # (board_str, zero_index, depth)
15    visited = {start}
16    while queue:
17        board_str, zero_index, depth = queue.popleft()
18        if board_str == target:
19            return depth
20        for adj in neighbors[zero_index]:
21            new_board = list(board_str)
22            new_board[zero_index], new_board[adj] = new_board[adj], new_board[zero_index]
23            new_board_str = ''.join(new_board)
24            if new_board_str not in visited:
25                visited.add(new_board_str)
26                queue.append((new_board_str, adj, depth + 1))
27    return -1

Explanation

This Python code uses a BFS approach to solve the sliding puzzle. We convert the board into a string and use a map to determine swap positions for '0'. Initially, each configuration is enqueued with its depth. The goal is to find the shortest path to the solved state.

A* Search Algorithm

Utilizing A* search, the algorithm proceeds by maintaining a priority queue based on potential shortest paths (current state cost plus heuristic estimate). The heuristic here is the Manhattan distance, guiding exploration toward the goal efficiently.

Time Complexity: O((6! = 720) log(720))
Space Complexity: O(720), based on the number of states handled.

JavaC++
1import java.util.*;
2
3






Video Solutions

Watch expert explanations and walkthroughs

LeetCode 69 Problem 3 - Sliding Puzzle

code_report
8:5115,439 views

Asked By Companies

4 companies
T
TikTok
A
Amazon
U
Uber
A
Airbnb

Prepare for Interviews

Practice problems asked by these companies to ace your technical interviews.

Explore More Problems

Notes

Personal Notes

Jot down your thoughts, approach, and key learnings

0 characters

Similar Problems

Trapping Rain WaterHard
Jump Game IIMedium
Maximum SubarrayMedium
Jump GameMedium
More similar problems

Related Topics

ArrayDynamic ProgrammingBacktrackingBreadth-First SearchMemoizationMatrix

Problem Stats

Acceptance Rate72.8%
DifficultyHard
Companies4

Practice on LeetCode

Solve with full IDE support and test cases

Solve Now

Frequently Asked Questions

Is Sliding Puzzle asked in FAANG interviews?

Yes, sliding puzzle style problems are popular in technical interviews because they test graph traversal, state encoding, and search strategies. Variants using BFS or A* search have appeared in interviews at major tech companies.

What is the optimal approach for Sliding Puzzle?

The most common optimal approach is Breadth-First Search (BFS). By treating each board configuration as a graph node and exploring neighbors level by level, BFS guarantees the minimum number of moves to reach the target state.

Why do we convert the puzzle board into a string?

Converting the board into a string or serialized format makes it easier to store and compare states. It allows efficient use of hash sets or maps to track visited configurations and avoid redundant exploration.

What data structure is best for solving Sliding Puzzle?

A queue is typically used for BFS to process states level by level. Additionally, a hash set is essential to track visited configurations so the algorithm does not revisit the same board states repeatedly.

public
class
Solution
{
4
public
int
slidingPuzzle
(
int
[
]
[
]
board
)
{
5
PriorityQueue
<
Node
>
pq
=
new
PriorityQueue
<
>
(
)
;
6
String
start
=
Arrays
.
deepToString
(
board
)
.
replaceAll
(
"[^\d]"
,
""
)
;
7
String
target
=
"123450"
;
8
int
[
]
[
]
neighbor
=
{
{
1
,
3
}
,
{
0
,
2
,
4
}
,
{
1
,
5
}
,
{
0
,
4
}
,
{
3
,
1
,
5
}
,
{
2
,
4
}
}
;
9
pq
.
add
(
new
Node
(
start
,
0
,
heuristic
(
start
,
target
)
)
)
;
10
Set
<
String
>
visited
=
new
HashSet
<
>
(
)
;
11
12
while
(
!
pq
.
isEmpty
(
)
)
{
13
Node
current
=
pq
.
poll
(
)
;
14
if
(
current
.
value
.
equals
(
target
)
)
{
15
return
current
.
depth
;
16
}
17
int
zeroIndex
=
current
.
value
.
indexOf
(
'0'
)
;
18
visited
.
add
(
current
.
value
)
;
19
20
for
(
int
adj
:
neighbor
[
zeroIndex
]
)
{
21
char
[
]
newBoardArray
=
current
.
value
.
toCharArray
(
)
;
22
char
temp
=
newBoardArray
[
adj
]
;
23
newBoardArray
[
adj
]
=
newBoardArray
[
zeroIndex
]
;
24
newBoardArray
[
zeroIndex
]
=
temp
;
25
String
newBoard
=
new
String
(
newBoardArray
)
;
26
27
if
(
!
visited
.
contains
(
newBoard
)
)
{
28
pq
.
offer
(
new
Node
(
newBoard
,
current
.
depth
+
1
,
heuristic
(
newBoard
,
target
)
)
)
;
29
}
30
}
31
}
32
return
-
1
;
33
}
34
35
private
int
heuristic
(
String
state
,
String
goal
)
{
36
int
dist
=
0
;
37
for
(
int
i
=
0
;
i
<
state
.
length
(
)
;
i
++
)
{
38
if
(
state
.
charAt
(
i
)
!=
'0'
)
{
39
int
targetPosition
=
goal
.
indexOf
(
state
.
charAt
(
i
)
)
;
40
dist
+=
Math
.
abs
(
targetPosition
/
3
-
i
/
3
)
+
Math
.
abs
(
targetPosition
%
3
-
i
%
3
)
;
41
}
42
}
43
return
dist
;
44
}
45
46
class
Node
implements
Comparable
<
Node
>
{
47
String
value
;
48
int
depth
;
49
int
cost
;
50
51
Node
(
String
v
,
int
d
,
int
c
)
{
52
value
=
v
;
53
depth
=
d
;
54
cost
=
d
+
c
;
55
}
56
57
@Override
58
public
int
compareTo
(
Node
other
)
{
59
return
Integer
.
compare
(
this
.
cost
,
other
.
cost
)
;
60
}
61
}
62
}

Explanation

This Java code implements the A* search algorithm to tackle the sliding puzzle. Nodes are compared based on the cost estimation which combines depth and heuristic calculations. Using Manhattan distance as a heuristic ensures the solution is efficiently discovered through optimal path estimation.