Save 37% off PRO during our Black Friday Sale! »

SE103 - Week 10, Session 1

7bf2baf0d8d5d7d96e6b67c5d567e3f9?s=47 Caren
August 08, 2020

SE103 - Week 10, Session 1

7bf2baf0d8d5d7d96e6b67c5d567e3f9?s=128

Caren

August 08, 2020
Tweet

Transcript

  1. Week 10: Backtracking

  2. How was the HackerRank?

  3. What is Backtracking?

  4. What is Backtracking? Enter Exit

  5. What is Backtracking? Enter Exit What are we trying to

    solve?
 -> Ways to exit maze
  6. What is Backtracking? Enter Exit What are we trying to

    solve?
 -> Ways to exit maze 1. Have we reached the end?
 -> If yes, we found a route!
 -> If no, try more paths (2)
  7. What is Backtracking? Enter Exit What are we trying to

    solve?
 -> Ways to exit maze 1. Have we reached the end?
 -> If yes, we found a route!
 -> If no, try more paths (2) 2. Go to next intersection / try next available routes
  8. What is Backtracking? Enter Exit What are we trying to

    solve?
 -> Ways to exit maze 1. Have we reached the end?
 -> If yes, we found a route!
 -> If no, try more paths (2) 2. Go to next intersection / try next available routes 3. For each unvisited direction, try to solve again
  9. What is Backtracking? Enter Exit What are we trying to

    solve?
 -> Ways to exit maze 1. Have we reached the end?
 -> If yes, we found a route!
 -> If no, try more paths (2) 2. Go to next intersection / try next available routes 3. For each unvisited direction, try to solve again 4. If dead end, go back to last intersection
  10. - Backtracing: Uses constraints to make search more efficient. Usually

    looks for all answers that satisfy constraint. - Dynamic Programming: Looking for the most optimal solution Backtracking vs DP
  11. 1. Search - what are we searching / solving for?

    2. GetCandidates - get all the possible potential solutions (local solutions) 3. IsSolution - is this candidate a solution? 4. Backtrack - Undo any state that was caused with local guesses Common Backtracking Algorithm
  12. Given a 2D board and a word, find if the

    word exists in the grid. 
 
 The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once. board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] “see” -> true “xyz” -> false Word Search
  13. Given a 2D board and a word, find if the

    word exists in the grid. 
 
 The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once. board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] “see” -> true “xyz” -> false Word Search What are our constraints?
  14. Given a 2D board and a word, find if the

    word exists in the grid. 
 
 The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once. board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] “see” -> true “xyz” -> false Word Search constraints
  15. Given a 2D board and a word, find if the

    word exists in the grid. board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] Word Search isSolution(prefix, word) // prefix is our built up solution // return prefix == word getCandidates(position, visited, board, letter) // get unvisited adjacent positions that match letter backup(prefix, position, visited) // remove last letter from previous // remove position from visited search(board, word, prefix, position, visited) // return true if isSolution(prefix, word) // for each getCandidates // add letter(position) to prefix // add position to visited // search from next position // if not found backup
  16. Given a 2D board and a word, find if the

    word exists in the grid. board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] Word Search isSolution(prefix, word) // prefix is our built up solution // return prefix == word getCandidates(position, visited, board, letter) // get unvisited adjacent positions that match letter backup(prefix, position, visited) // remove last letter from previous // remove position from visited search(board, word, prefix, position, visited) // return true if isSolution(prefix, word) // for each getCandidates // add letter(position) to prefix // add position to visited // search from next position // if not found backup
  17. Given a 2D board and a word, find if the

    word exists in the grid. board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] Word Search isSolution(prefix, word) // prefix is our built up solution // return prefix == word getCandidates(position, visited, board, letter) // get unvisited adjacent positions that match letter backup(prefix, position, visited) // remove last letter from previous // remove position from visited search(board, word, prefix, position, visited) // return true if isSolution(prefix, word) // for each getCandidates // add letter(position) to prefix // add position to visited // search from next position // if not found backup
  18. Given a 2D board and a word, find if the

    word exists in the grid. board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] Word Search isSolution(prefix, word) // prefix is our built up solution // return prefix == word getCandidates(position, visited, board, letter) // get unvisited adjacent positions that match letter backup(prefix, position, visited) // remove last letter from previous // remove position from visited search(board, word, prefix, position, visited) // return true if isSolution(prefix, word) // for each getCandidates // add letter(position) to prefix // add position to visited // search from next position // if not found backup
  19. Debug Session Combination Sum

  20. Next Session - DP meets Backtracking!

  21. Breakout Rooms - Half of group does one problem, other

    half does the other problem - 30 minutes, everybody tries to do their own problem - 10 minutes - group 1 explains their problem - 10 minutes - group 2 explains their problem - Last 10 minutes - try implementing the problem we just debugged together!
  22. Hiring Behind the Scenes What happens after you finish that

    onsite interview??
  23. Hiring Behind the Scenes Startup World:
 - Everybody individually enters

    their feedback right after they talk to you (hire / no hire / not sure)
  24. Hiring Behind the Scenes Startup World:
 - Everybody individually enters

    their feedback right after they talk to you (hire / no hire / not sure) - Everybody gets together to talk as a group
  25. Hiring Behind the Scenes Startup World:
 - Everybody individually enters

    their feedback right after they talk to you (hire / no hire / not sure) - Everybody gets together to talk as a group - Was the person’s coding skills up to par? (did they understand time / space complexity, do they know when to use different data structures, etc)

  26. Hiring Behind the Scenes Startup World:
 - Everybody individually enters

    their feedback right after they talk to you (hire / no hire / not sure) - Everybody gets together to talk as a group - Was the person’s coding skills up to par? (did they understand time / space complexity, do they know when to use different data structures, etc)
 - Was the person able to communicate well?

  27. Hiring Behind the Scenes Startup World:
 - Everybody individually enters

    their feedback right after they talk to you (hire / no hire / not sure) - Everybody gets together to talk as a group - Was the person’s coding skills up to par? (did they understand time / space complexity, do they know when to use different data structures, etc)
 - Was the person able to communicate well?
 - Was the person respectful of everybody?
  28. Hiring Behind the Scenes Startup World:
 - Everybody individually enters

    their feedback right after they talk to you (hire / no hire / not sure) - Everybody gets together to talk as a group - Was the person’s coding skills up to par? (did they understand time / space complexity, do they know when to use different data structures, etc)
 - Was the person able to communicate well?
 - Was the person respectful of everybody? - Is this someone we would enjoy working with?

  29. Hiring Behind the Scenes Startup World:
 - Everybody individually enters

    their feedback right after they talk to you (hire / no hire / not sure) - Everybody gets together to talk as a group - Was the person’s coding skills up to par? (did they understand time / space complexity, do they know when to use different data structures, etc)
 - Was the person able to communicate well?
 - Was the person respectful of everybody? - Is this someone we would enjoy working with?
 - Does the person’s background match what we need in the team?
  30. Hiring Behind the Scenes Big Company World

  31. Hiring Behind the Scenes Big Company World - Interviewer enters

    their feedback immediately after

  32. Hiring Behind the Scenes Big Company World - Interviewer enters

    their feedback immediately after
 1. Coding 2. Design 3. Communication 4. Speed
  33. Hiring Behind the Scenes Big Company World
 
 - Coding

    skills
 - is your code easy to understand?
 - did you handle edge cases?
 - do you know when to use data structures and built in methods?
 - were you able to solve your own bugs? - Design - Communication - Speed

  34. Hiring Behind the Scenes Big Company World
 - Coding
 -

    Design
 - were you able to gather enough requirements to solve the problem? - were you able to discuss trade-offs with different approaches?
 - were you able to verbally explain a solution before jumping into implementation?
 - did you use the appropriate data structures / algorithms? - Communication - Speed

  35. Hiring Behind the Scenes Big Company World 
 - Coding

    - Design - Communication
 - were you able to understand the problem and state possible confusions?
 - did what you say match what you coded? - Speed

  36. Hiring Behind the Scenes Big Company World 
 - Coding

    - Design - Communication - Speed
 - were you able to finish the question within the expected time? (often times a question has followups)
 - did you need hints to guide you to the solution?