アルゴリズム問題の解-ハッシュ


プログラマ


完走していない選手

  • Sortソリューションの使用
  • complete,parti sort
  • forがドアを迂回し、完了[i]と部分[i]が一致しない場合、break
    ex) {eden, leo, kiki} {eden, kiki}
  • を回転してもまだ中断されていない場合、partiの最後のパラメータ値は正しい(else)
  • である.
  • 州のポイントは、完成した長さでドアを回らなければなりません.comple=parti-1のため、partiに移動すると最後のiは
  • に聞こえない.
    def solution1(participant, completion):
        participant.sort()
        completion.sort()
    
        answer = ''
        for i in range(len(completion)):
            if participant[i] != completion[i]:
                answer = participant[i]
                break;
    
        else:
            answer = participant[len(participant) - 1]
    
        # print(answer)
    
        return answer
  • hashを使用したソリューション
  • partiのhashMapの作成
    {eden=2, leo=1, kiki=1}
  • パズルから削除します.
    {eden=1, leo=0, kiki=0}
  • 値がゼロでない値が正解
  • def solution2(participant, completion):
        answer = ''
        data = dict()
        for i in participant:
            if i in data.keys():
                v = data[i]
                data[i] = v + 1
    
            else:
                data[i] = 1
    
        for i in completion:
            v = data[i]
            data[i] = v - 1
    
        for k, v in data.items():
            if v != 0:
                answer = k
    
        return answer

    電話番号リスト


  • Sort後のダブルfor文による全面比較->時間複雑度エラー(解決方法X)

  • 文字列にソートされているため、起動後すぐに前に比較するだけです.前に比較するだけです.


  • HashMapの使用
  • データ値は
  • hashMapまたはhashSetの
  • に格納.
    誰もが
  • を持って行った.
    1
    11
    119
    1195
    ...
    データがdictにあるかどうかをチェックし、あればfalseですが、自分は除外します.
  • def solution(phone_book):
        answer = True
    
    
        # 방법 1 (시간 초과)
        # phone_book.sort()
        # for i in range(len(phone_book)):
        #     for j in range( i +1 ,len(phone_book)):
        #         if phone_book[j].startswith(phone_book[i]):
        #             return False
    
        # 방법 2 (sort를 이용하여 바로 앞만 확인)
        # phone_book.sort()
        # for i in range(len(phone_book)-1):
        #     if phone_book[i+1].startswith(phone_book[i]):
        #         answer=False
    
        # 방법 3. (해시를 이용)
        data = dict()
        for i in phone_book:
            data[i] = 1
    
        for num in phone_book:
            temp = ""
            for j in num:
                temp += j 
                if temp in phone_book and temp != num: 
                    answer = False
    
    
    
        return answer