2021년 3월 LeetCoding Challenge — 14일차: 연결 목록에서 노드 교환

문제 설명



연결된 목록의 헤드와 정수 k가 주어집니다.

처음부터 *k번째 *노드와 끝에서 *k번째 *노드의 값을 **교환**한 후 연결된 목록의 헤드를 반환합니다(목록은 **1-인덱스됨).

예 1:



**Input:** head = [1,2,3,4,5], k = 2
**Output:** [1,4,3,2,5]

예 2:

**Input:** head = [7,9,6,6,7,8,3,0,9,5], k = 5
**Output:** [7,9,6,6,8,7,3,0,9,5]

예 3:

**Input:** head = [1], k = 1
**Output:** [1]

예 4:

**Input:** head = [1,2], k = 1
**Output:** [2,1]

예 5:

**Input:** head = [1,2,3], k = 2
**Output:** [1,2,3]

제약:
  • 목록의 노드 수가 n개입니다.
  • 1 <= k <= n <= 105
  • 0 <= Node.val <= 100

  • 해결책



    이 문제에서는 처음부터 k 번째 노드를 끝에서 k 번째 노드로 바꿔야 합니다. 이것은 직접적인 LinkedList 문제입니다.

    여기서 우리는 4개의 노드를 사용하고 있습니다.
  • fast - 끝에서 k 번째 노드입니다
  • .
  • slow — 시작부터 k 번째 노드입니다
  • .
  • first & second — 스와핑에 사용됩니다(가독성도 높이기 위해)

  • 연산:
  • 먼저 빠른 노드로 k-1 노드를 이동합니다. 첫 번째 변수에 빠른 노드를 저장합니다.
  • 이제 목록 끝까지 이동하고 fast = fast.next 및 slow=slow.next 를 수행합니다.
  • fast.next==null 인 경우 두 번째 변수에 느린 값을 저장합니다. 이 두 번째 변수는 끝 이전의 위치 k 노드입니다.
  • 이제 첫 번째 노드와 두 번째 노드의 값을 바꿉니다.

  • 코드는 다음과 같습니다.







    코드는 여기에서 찾을 수 있습니다




    <사업부 클래스="readme-개요">

    스카이키아 / LeetCode




    <사업부 클래스="ltag-github-body">

    LeetCode


    저는 약 1년 동안 Leetcode 문제를 해결해 왔습니다. 갑자기 저는 이러한 문제에 대한 자습서 작성에 대한 열정을 키웠습니다. 나는 Leetcode 문제로 시작하고 있으며, 앞으로는 Spring, Android, Java, 알고리즘 등에 대한 자습서를 만들려고 노력할 것입니다.


    매체에서 팔로우 - https://sourav-saikia.medium.com

    dev.to에서 저를 팔로우하세요 -

    트위터에서 나를 팔로우하세요 -

    Linkedin에서 연결 -


    다음 표에는 각 솔루션 자습서의 모든 문제가 포함되어 있습니다. 곧 더 많은 기사를 추가하도록 노력하겠습니다.



    3월 리트코딩 챌린지




    View on GitHub



    2021년 3월 LeetCoding Challenge에 대한 다른 게시물을 확인하세요.



    <올>
  • March LeetCoding Challenge — Day 1 — Distribute Candies

  • March LeetCoding Challenge — Day 2 — Set Mismatch

  • March LeetCoding Challenge — Day 3 — Missing Number

  • March LeetCoding Challenge — Day 4 — Intersection of Two Linked Lists

  • March LeetCoding Challenge — Day 5 — Average of Levels in Binary Tree

  • March LeetCoding Challenge — Day 6 — Short Encoding of Words

  • March LeetCoding Challenge — Day 7 — Design HashMap

  • March LeetCoding Challenge — Day 8 — Remove Palindromic Subsequences

  • March LeetCoding Challenge — Day 10 — Integer to Roman

  • March LeetCoding Challenge — Day 12 — Check If a String Contains All Binary Codes of Size K

  • 좋은 웹페이지 즐겨찾기