정렬된 배열의 유효한 요소

8562 단어 pythonchallenge

문제: 문 정렬된 배열에 있는 고유한 요소의 수를 세는 함수를 작성하십시오.



난이도: 쉬움



테스트 케이스


  • [2, 2, 3, 3, 4, 5] --> 4
  • [4, 5, 7, 10, 15] --> 5
  • [1, 1, 1, 2, 5, 5, 5] --> 3
  • [1, 2, 3, 4, 4, 5, 5, 5] --> 5
  • 없음 --> 0



  • 연산



  • 파이썬 세트 솔루션
  • 배열의 요소를 추가하여 길이를 설정하고 반환합니다.



  • 사전 솔루션
  • 주어진 배열을 반복합니다.
  • 요소가 이전에 사전에서 본 적이 없는 경우
  • 값이 1인 요소를 사전에 추가합니다.
  • 사전의 길이를 반환합니다.



  • 최고의 솔루션
  • 인덱스를 1로 초기화
  • 1에서 주어진 배열의 길이까지 반복합니다.
  • 현재 반복 i의 요소가 인덱스 - 1의 위치에 있는 요소와 같지 않으면
  • 인덱스의 요소를 현재 반복 i의 요소로 덮어씁니다.
  • 인덱스 값을 1씩 증가
  • 인덱스 반환




  • 시간 및 공간 복잡성


  • 모든 솔루션의 시간 복잡도: O(n)

  • 공간 복잡성
  • 세트: O(n)
  • 사전: O(n)
  • 최상의 솔루션: O(1)




  • 암호



    class ValidElements(object):
        def validElements(self, arr):
            if not arr:
                return 0
            return len(set(arr))
    
        def validElements2(self, arr):
            if not arr:
                return 0
            seen = {}
            for entry in arr:
                if entry not in seen:
                    seen[entry] = 1
            return len(seen)
    
        def validElements3(self, arr):
            if not arr:
                return 0
            index = 1
            for i in range(1, len(arr)):
                if arr[index - 1] != arr[i]:
                    arr[index] = arr[i]
                    index += 1
            print(arr)
            return index
    

    단위 테스트



    import unittest
    from validElements import ValidElements
    
    
    class TestValidElements(unittest.TestCase):
        def testValidElements(self, func):
            self.assertEqual(func([2, 2, 3, 3, 4, 5]), 4)
            self.assertEqual(func([1, 2, 3, 4, 4, 5, 5, 5]), 5)
            self.assertEqual(func([1, 1, 1, 2, 5, 5, 5]), 3)
            print("All test cases passed")
    
    
    def main():
        test = TestValidElements()
        elements = ValidElements()
        test.testValidElements(elements.validElements)
        test.testValidElements(elements.validElements2)
        test.testValidElements(elements.validElements3)
    
    
    if __name__ == "__main__":
        main()
    

    Original article
    Github solution

    행복한 코딩! 😃

    좋은 웹페이지 즐겨찾기