問題解決パターン




共通問題解決パターン入門
ヘイガイズ😊,
以前の講義で論じたように、問題セットに直面したときに実装できる一般的な問題解決パターンを見ています.それで、右にジャンプしましょう.
私が通過することを望むパターンのリストを作る前に、意図されたアプローチを通して行かせてください.

How to Improve in Problem Solving


( I )戦略計画の策定
私は、それを通して操縦することを望んで、少しまたは全く理解でセットされる問題を解決するために、正しく飛び込むことを本当に誘惑することができると認めます.しかし、私はあなたにこのようなタスクを達成するための十分な計画を考案することを提案します.
( ii )共通問題解決パターンの習得
もちろん、これはあなたに様々な問題セットがかかるかもしれない最も一般的なフォームに把握を与える.これにより、これらの問題セットに取り組むための先見性を与える.

Let Highlight the Problem-Solving Process

  • はその問題を理解する.
  • 具体例を探る.
  • 問題を解決する.
  • 簡素化-提案された解決策を作成します.
  • 様々なケーススタディにソリューションを実装します.
  • Refactor -ソリューションを最適化します.
  • 今すぐ上のハイライトに深く見てみましょう

    Understanding the Problem set

  • あなたの理解に従って問題の本質を再設定しようとするべきです.
  • は、意図された入力と予想される出力を明確に見ます.可能なエッジケースを念頭に置いておく.
  • は、予想された出力が入力から決定されることができるかどうか決定する.
  • を通して最終的な視線を持ち、すべての重要な詳細の注意を取っていることを確認します.
  • Explore Concrete Examples

  • は、すべての可能なエッジケース(例えば無効な入力、空白の存在または特殊な文字Etcetera)を通して見て、固体のアルゴリズムを考案します.
  • グラフィカルユーザーの物語を支援するには、プレゼンテーション可能です.理解の深いレベルを表示することができますまた、他の問題セットとあなたの意図されたソリューションを理解するのに役立ちます.
  • 簡単な例を作成し、複雑なものを習得する.
  • Breaking things down


    以下のような問題セット(アルゴリズムの方法)を打破するにはかなりの方法があります.
  • sudoコード
  • フロー図et cetera.
  • Simplifying the Problem Sets


    上記の手順を経て後に、我々は最終的に問題を簡素化し、十分な解決策を推測することが期待されています.

    Implementation of the said Solution


    我々は我々のソリューションは、簡単かつチャレンジングなすべてのテストケースを渡す必要があります.一方、一貫性のある入力の可能性を想定している可能性があります.

    Having a Look-Back.


    私はあなたのソリューションの最適化されたバージョンを持つ習慣を作成するために採用.質問に答える
    予想される結果がある場合、

  • 他の可能なアプローチをチェックアウトする
  • (我々が以前に話した基準に我々が言及する)解決方法は、どれほどわかりやすいですか
    同様の問題セット
  • へのIT適応
  • は、溶液の性能を改善できるか?(時間と空間の複雑さに関して)
  • は、それが基本的な規則と標準に従うかどうかチェックします.
  • Example簡単な問題を設定して上記の手順を実行しましょう.あなたは、この自分自身を試すことができます親切に、我々は異なる答えが、同様のアプローチを持ってバインドされていることに注意してください.
    Questionは、文字列を取得し、与えられた文字列内の各文字の周波数を返す関数を書き込みます.From 1:問題を理解する
  • 単純な単語で、与えられたストリングの各々のキャラクタの発生を返してください.
  • 我々は意図した入力として文字列を推論することができます.
  • はい、予想される出力は入力から得ることができます.
  • コンクリートの例を調査するFrom 2:ベンは国のリストで再発生する文字を数えるための割り当てを与えられた.それで、彼は空想を得て、自動化されたプロセスを採用しました.アルゴリズム的アプローチにより
    ダウンを壊すFrom 3:機能を定義している
  • カウンター
  • のインスタンス化
  • 入力
  • のあらゆる文字の検査
    類似性とカウントなどの鋭い詳細を探している
  • 期待されるエッジケースに基づいて出力または文を返します.
  • 問題セットを単純化するFrom 4:
    function countCharacter(arr){
    
        let countResult = {};  
    
        for(let i = 0; i < arr.length; i++){       
            let countIndex = arr[i].toLowerCase();       
            if(countResult[countIndex] > 0){       
                countResult[countIndex]++;    
            } else {     
                countResult[countIndex] = 1;       
            }
        }
        return countResult;
    }
    
    countCharacter("hey guy!")
    
    結果{" ": 1, !: 1, e: 1, g: 1, h: 1, u: 1, y: 2}from 5:エッジケースを考慮
    function countCharacter(arr){
        let countResult = {};  
    
        for(var char of arr){                
            char = char.toLowerCase();
            if(/[a-z0-9]/.test(char)){
                if(countResult[char] > 0){
                    countResult[char]++
                } else {
                    countResult[char] = 1;
                }
            }
        }
        return  countResult;
    }
    
    countCharacter("hey guy!")
    
    結果{h: 1, e: 1, y: 2, g: 1, u: 1}from 6:リファクタリング
    function countCharacter(arr){
        let countResult = {};  
    
        for(var char of arr){                
            char = char.toLowerCase();
            if(/[a-z0-9]/.test(char)){
            countResult[char] = (countResult[char] || 0) +1;     
            }
        }
        return  countResult;
    }
    
    countCharacter("hey guy!")
    
    結果{h: 1, e: 1, y: 2, g: 1, u: 1}注は、簡単にあなたのchrome snippetで上記のコードブロックを実行することができますそれぞれの結果を参照してください.
    上記のコードスニペットは上記の問題文の解決策であり、理解しなければ心配しないでください.私は、最初にこれからの講義から、私が最初に基礎をなしている概念を理解するのを助けることになっている各々のコード・ブロックを説明し始めます.
    次の部分で会いましょう👏🏻.