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

CodePath - Linked List

7bf2baf0d8d5d7d96e6b67c5d567e3f9?s=47 Caren
October 01, 2021

CodePath - Linked List

7bf2baf0d8d5d7d96e6b67c5d567e3f9?s=128

Caren

October 01, 2021
Tweet

Transcript

  1. Linked Lists Week 3 What’s a good memory you have

    from this week? -> I had an amazingly tasty burger 🍔
  2. Addressing Feedback - Panel was well-received - Office hours are

    posted on course portal now - Zoom issues should be resolved
  3. Linked Lists

  4. What is a Linked List? Individual elements (nodes) that each

    hold two pieces of information: 1) data (integer, string, anything!) 2) reference to the next node
  5. None
  6. Why are they useful?

  7. Why are they useful? Web browser’s history (previous / next

    page)
  8. Why are they useful? Web browser’s history (previous / next

    page) Memory management (blocks of memories)
  9. Why are they useful? Web browser’s history (previous / next

    page) Memory management (blocks of memories) Hash tables (resolving collisions)
  10. Types of Linked Lists

  11. Singly linked Doubly linked Circularly linked Types of Linked Lists

  12. Singly linked Doubly linked Circularly linked Types of Linked Lists

  13. Pros and Cons Always think about space / time complexity

    when choosing a data structure!
  14. Pros and Cons Always think about space / time complexity

    when choosing a data structure! Good for:
 - insertion / deletion from one end 
 

  15. Pros and Cons Always think about space / time complexity

    when choosing a data structure! Good for:
 - insertion / deletion from one end 
 
 Bad for:
 - searching
  16. Pros and Cons Always think about space / time complexity

    when choosing a data structure! Good for:
 - insertion / deletion from one end 
 
 Bad for:
 - searching https://guides.codepath.org/compsci/Linked-Lists
  17. Linked List Tips and Tricks

  18. Linked List Tips and Tricks Take multiple passes through the

    linked list
 - get length 
 - save other information about contents
  19. Linked List Tips and Tricks Take multiple passes through the

    linked list
 - get length 
 - save other information about contents Two pointers
 - ‘race car’ strategy with one regular pointer, and one fast pointer
  20. Linked List Tips and Tricks Take multiple passes through the

    linked list
 - get length 
 - save other information about contents Two pointers
 - ‘race car’ strategy with one regular pointer, and one fast pointer Dummy node
 - helpful for preventing errors when returning ‘head’ (merging lists, deleting from lists)
  21. Understand Match Pseudocode / Plan Implement Review Evaluate

  22. Plan / Pseudocode Start to figure out how you would

    solve the problem Can you create any ‘magic’ helper methods that would simplify the solution? (ie : getLength(), reverse() ) Talk through different approaches you can take, and their tradeoffs Be able to verbally describe your approach and explain how an example input would produce the desired output
  23. Example: Remove Nth Node from End of List Understand: Always

    start by understanding the question and running through an example
  24. Example: Remove Nth Node from End of List Understand: Always

    start by understanding the question and running through an example 1->2->3->4->5, n = 2

  25. Example: Remove Nth Node from End of List Understand: Always

    start by understanding the question and running through an example 1->2->3->4->5, n = 2
 return 1->2->3->5
  26. Example: Remove Nth Node from End of List Understand: Always

    start by understanding the question and running through an example 1, n = 1

  27. Example: Remove Nth Node from End of List Understand: Always

    start by understanding the question and running through an example 1, n = 1
 return null
  28. Example: Remove Nth Node from End of List Understand: Always

    start by understanding the question and running through an example 1->2->3->4->5, n = 2
 return 1->2->3->5 Let’s assume we start without any time / space constraints. So our goal is to figure out ANY kind of solution to produce the right answer Any other questions??
  29. Example: Remove Nth Node from End of List Match :

    Are there any special techniques that we can use to help make this easier?
 

  30. Example: Remove Nth Node from End of List Match :

    Are there any special techniques that we can use to help make this easier?
 -> We can take a first pass through the linked list to store the elements in an array 
 

  31. Example: Remove Nth Node from End of List Match :

    Are there any special techniques that we can use to help make this easier?
 -> We can take a first pass through the linked list to store the elements in an array 
 -> We can also take a pass to get the length of the linked list 

  32. Example: Remove Nth Node from End of List Match :

    Are there any special techniques that we can use to help make this easier?
 -> We can take a first pass through the linked list to store the elements in an array 
 -> We can also take a pass to get the length of the linked list Plan : What are some different ways we can solve this problem?
 

  33. Example: Remove Nth Node from End of List Match :

    Are there any special techniques that we can use to help make this easier?
 -> We can take a first pass through the linked list to store the elements in an array 
 -> We can also take a pass to get the length of the linked list Plan : What are some different ways we can solve this problem?
 1) We can store the elements in an array, get the length of the array, and then rebuild our list excluding the nth to last node
 

  34. Example: Remove Nth Node from End of List Match :

    Are there any special techniques that we can use to help make this easier?
 -> We can take a first pass through the linked list to store the elements in an array 
 -> We can also take a pass to get the length of the linked list Plan : What are some different ways we can solve this problem?
 1) We can store the elements in an array, get the length of the array, and then rebuild our list excluding the nth to last node
 2) We can follow the first idea, but instead of storing things in an array, remove the reference to the nth to last node the second time we iterate through the list

  35. Example: Remove Nth Node from End of List Match :

    Are there any special techniques that we can use to help make this easier?
 -> We can take a first pass through the linked list to store the elements in an array 
 -> We can also take a pass to get the length of the linked list Plan : What are some different ways we can solve this problem?
 1) We can store the elements in an array, get the length of the array, and then rebuild our list excluding the nth to last node
 2) We can follow the first idea, but instead of storing things in an array, remove the reference to the nth to last node the second time we iterate through the list
 What would be the space / time complexity of our solution?
  36. Example: Remove Nth Node from End of List Our approach:


    1) make initial pass through linked list to get length
 2) make second pass to remove any reference to nth to last node
 

  37. Example: Remove Nth Node from End of List Our approach:


    1) make initial pass through linked list to get length
 2) make second pass to remove any reference to nth to last node
 
 Let’s draw out how this might work with an example
 Given linked list 1->2->3, n = 1 (we want to return 1->2)
  38. Example: Remove Nth Node from End of List Our approach:


    1) make initial pass through linked list to get length
 2) make second pass to remove any reference to nth to last node
 
 Let’s draw out how this might work with an example
 Given linked list 1->2->3, n = 1 (we want to return 1->2) First pass, we get length = 3.
 

  39. Example: Remove Nth Node from End of List Our approach:


    1) make initial pass through linked list to get length
 2) make second pass to remove any reference to nth to last node
 
 Let’s draw out how this might work with an example
 Given linked list 1->2->3, n = 1 (we want to return 1->2) First pass, we get length = 3. Since n = 1, that means we want to remove the 3 -1 = 2 node (with index starting at 0)
 

  40. Example: Remove Nth Node from End of List Our approach:


    1) make initial pass through linked list to get length
 2) make second pass to remove any reference to nth to last node
 
 Let’s draw out how this might work with an example
 Given linked list 1->2->3, n = 1 (we want to return 1->2) First pass, we get length = 3. Since n = 1, that means we want to remove the 3 -1 = 2 node (with index starting at 0)
 
 As we iterate through the list..
 at node 1 -> numberOfNodesSeen = 0
  41. Example: Remove Nth Node from End of List Our approach:


    1) make initial pass through linked list to get length
 2) make second pass to remove any reference to nth to last node
 
 Let’s draw out how this might work with an example
 Given linked list 1->2->3, n = 1 (we want to return 1->2) First pass, we get length = 3. Since n = 1, that means we want to remove the 3 -1 = 2 node (with index starting at 0)
 
 As we iterate through the list..
 at node 1 -> numberOfNodesSeen = 0
 at node 2-> numberOfNodesSeen = 1
  42. Example: Remove Nth Node from End of List Our approach:


    1) make initial pass through linked list to get length
 2) make second pass to remove any reference to nth to last node
 
 Let’s draw out how this might work with an example
 Given linked list 1->2->3, n = 1 (we want to return 1->2) First pass, we get length = 3. Since n = 1, that means we want to remove the 3 -1 = 2 node (with index starting at 0)
 
 As we iterate through the list..
 at node 1 -> numberOfNodesSeen = 0
 at node 2-> numberOfNodesSeen = 1
 at node 3 -> numberOfNodesSeen = 2 -> at this point we need to set node 2’s next to be node 3’s next!
  43. Example: Remove Nth Node from End of List Our approach:


    1) make initial pass through linked list to get length
 2) make second pass to remove any reference to nth to last node
 
 Let’s draw out how this might work with an example
 Given linked list 1->2->3, n = 1 (we want to return 1->2) First pass, we get length = 3. Since n = 1, that means we want to remove the 3 -1 = 2 node (with index starting at 0)
 
 As we iterate through the list..
 at node 1 -> numberOfNodesSeen = 0, previousNode = null
 at node 2-> numberOfNodesSeen = 1, previousNode = 1
 at node 3 -> numberOfNodesSeen = 2, previousNode = 2 -> we set previousNode.next = node.next (node 3’s next = null)
  44. Breakout Rooms - Turn on your camera - Assign a

    timekeeper
 - Breakout rooms will close at 11:30 am PT
 - Take a 5 min break right before then! - Open the Course Portal and go to this week’s Session #2 tab
 - Read the At a Glance
 - Start with the Icebreaker! - If your pod needs help, post a message in the @se102-help-fall21 slack channel and tag @se102-tas
  45. Evaluating companies

  46. Evaluating companies Glassdoor reviews Researching current people who work at

    the company on LinkedIn
  47. Questions for me?

  48. Questions for me? Work Life Balance

  49. Questions for me? Work Life Balance - How does the

    team figure out what to work on in the next 3-6 months? - How does the team tackle tech debt? - What is a typical release process? - Weekly? Biweekly? - How does the team prepare for releases? - How is the release monitored afterwards? - Are there oncall schedules?
  50. Questions for me? Career Growth

  51. Questions for me? Career Growth - What do you see

    me working on in my first 3-6 months on the job? - How do people on the team get feedback usually?
  52. Questions for me? General - What are some challenging projects

    you’ve worked on in the past 3-6 months? - What kind of meetings do you usually have in a week?
  53. Questions for me? Other questions?

  54. Survey