배열의 요소 바꾸기

1828 단어 theabbieleetcodedsa
고유한 양의 정수nums로 구성된 인덱스가 0인 배열n이 제공됩니다. m 작업을 이 어레이에 적용합니다. 여기서 ith 작업에서 숫자 operations[i][0]operations[i][1]로 바꿉니다.
ith 작업에서 다음이 보장됩니다.
  • operations[i][0]nums에 존재합니다.
  • operations[i][1]nums에 존재하지 않습니다.

  • 모든 연산을 적용한 후 얻은 배열을 반환합니다.

    예 1:

    입력: 숫자 = [1,2,4,6], 연산 = [[1,3],[4,7],[6,1]]
    출력: [3,2,7,1]
    설명: 숫자에 대해 다음 작업을 수행합니다.
  • 숫자 1을 3으로 바꿉니다. 숫자는 [3,2,4,6]이 됩니다.
  • 숫자 4를 7로 바꿉니다. 숫자는 [3,2,7,6]이 됩니다.
  • 숫자 6을 1로 바꿉니다. 숫자는 [3,2,7,1]이 됩니다.
    최종 배열 [3,2,7,1]을 반환합니다.

  • 예 2:

    입력: 숫자 = [1,2], 연산 = [[1,3],[2,1],[3,2]]
    출력: [2,1]
    설명: 숫자에 대해 다음 작업을 수행합니다.
  • 숫자 1을 3으로 바꿉니다. 숫자는 [3,2]가 됩니다.
  • 숫자 2를 1로 바꿉니다. 숫자는 [3,1]이 됩니다.
  • 숫자 3을 2로 바꿉니다. 숫자는 [2,1]이 됩니다.
    배열 [2,1]을 반환합니다.

  • 제약:
  • n == nums.length
  • m == operations.length
  • 1 <= n, m <= 105
  • nums의 모든 값은 고유합니다.
  • operations[i].length == 2
  • 1 <= nums[i], operations[i][0], operations[i][1] <= 106
  • operations[i][0]nums 연산을 적용할 때 ith에 존재하게 됩니다.
  • operations[i][1]nums 연산을 적용할 때 ith에 존재하지 않습니다.

  • 해결책:

    class Solution:
        def arrayChange(self, nums: List[int], operations: List[List[int]]) -> List[int]:
            n = len(nums)
            pos = {}
            for i in range(n):
                pos[nums[i]] = i
            for a, b in operations:
                i = pos[a]
                nums[i] = b
                pos[b] = i
            return nums
    

    좋은 웹페이지 즐겨찾기