<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      萌新的算法課-方法論



      為什么要重視算法

      • 面試畢竟歷程
        • 其實這是個偽命題,如果為了面試,大家去背一下特定的幾個算法答案就好了
      • 提高邏輯思維,理解能力
      • 提高代碼質量

       

      為什么說算法是程序員最應該學習的技能,沒有之一

      為什么這么說呢?可以思考一下

      學框架其實就是學怎么更好的用人家封裝好的api

      看源碼,就是看人家怎么實現的這個組件,學習人家的設計思維。

      但真的是這樣嗎?但其實大多數情況都是為了應付面試,然后實際學習場景大家都是看看別人的博客,看看講解視頻,然后隨便扒扒源碼

      綜上所述其實,無論學習新框架還是看源碼,更多的考驗的是記憶力,與略微的理解能力

       

      思考一下,為什么面試都要考算法?

      其實我們都在逃避,相比于算法,其他的能力確實相對于來說比較容易掌握

      • 程序員更重要的就是邏輯能力,服務端更甚
      • 優秀的軟件工程師必須具備過硬的代碼開發能力,而這就體現在你對數據結構、算法思維、代碼效率優化等知識的儲備上,并直接反應在你工作中解決實際問題的好壞上。

      能力分布表

       邏輯能力理解能力記憶力
      算法 60% 30% 10%
      新框架,新知識 10% 20% 70%
      源碼探索 20% 30% 50%
             

       

      為什么說算法會提高代碼質量

      舉個簡單的例子

      在海量數據中查詢指定數據,粗笨的方法就是循環便利一邊找到對應的就好了,

      如何用算法來解決?  

      1. 有序存儲
      2. 二分查找

      收益:數據量小的時候可能沒什么明顯收益,但假如我們數據量達到了1000w,兩種查找方法的效率可能就是1000萬次和24次的區別了(log2 10000000 = 23.25)

       

      代碼質量如何一步步提高

      1. 暴力解法
        1. 在沒有任何時間、空間約束下,完成代碼任務的開發。
      2. 剔除無效操作處理
        1. 將代碼中的無效計算、無效存儲剔除,降低時間或空間復雜度。
      3. 時空轉換
        1. 設計合理數據結構,完成時間復雜度向空間復雜度的轉移。
      4. 邏輯歸納
        1. 利用邏輯關系,完成時間復雜度和空間復雜度的降低

       

      eg1:

      假設有任意多張面額為 2 元、3 元、7 元的貨幣,現要用它們湊出 100 元,求總共有多少種可能性

      暴力解法

      public void s1_1() {
          int count = 0;
          for (int i = 0; i <= (100 / 7); i++) {
              for (int j = 0; j <= (100 / 3); j++) {
                  for (int k = 0; k <= (100 / 2); k++) {
                      if (i * 7 + j * 3 + k * 2 == 100) {
                          count += 1;
                      }
                  }
              }
          }
          System.out.println(count);
      }

       


      3 層的 for 循環。從結構上來看,顯然的 O( n3 ) 的時間復雜度。思考一下會發現,最內層的 for 是多余的剔除無效操作處理

      public void s1_2() {
          int count = 0;
          for (int i = 0; i <= (100 / 7); i++) {
              for (int j = 0; j <= (100 / 3); j++) {
                  if ((100-i*7-j*3 >= 0)&&((100-i*7-j*3) % 2 == 0)) {
                      count += 1;
                  }
              }
          }
          System.out.println(count);
      }

       


      eg2: 

      給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 的那 兩個 整數,并返回它們的數組下標。

      暴力解法

      public int[] s2_1(int[] nums, int target) {
              int n = nums.length;
              for (int i = 0; i < n; ++i) {
                  for (int j = i + 1; j < n; ++j) {
                      if (nums[i] + nums[j] == target) {
                          return new int[]{i, j};
                      }
                  }
              }
              return new int[0];
          }

       

      時空轉換

      public int[] s2_2(int[] nums, int target) {
              Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>();
              for (int i = 0; i < nums.length; ++i) {
                  if (hashtable.containsKey(target - nums[i])) {
                      return new int[]{hashtable.get(target - nums[i]), i};
                  }
                  hashtable.put(nums[i], i);
              }
              return new int[0];
          }

       

      posted @ 2021-04-26 20:18  房上的貓  閱讀(439)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 小嫩批日出水无码视频免费| 97久久久精品综合88久久| 成人亚洲欧美一区二区三区| 国产又色又刺激高潮视频| 婷婷亚洲综合五月天小说| 亚洲精品综合一区二区在线| 激情综合色综合久久综合| 国产午夜亚洲精品不卡下载| 亚洲综合91社区精品福利| 免费人成在线视频无码| 午夜综合网| 亚洲美免无码中文字幕在线| 免费看黄片一区二区三区| 一区天堂中文最新版在线| 无码国模国产在线观看免费| 熟妇人妻无码中文字幕老熟妇| 色偷偷女人的天堂亚洲网| 中文字幕国产精品二区| 少妇宾馆粉嫩10p| 国产大尺度一区二区视频| 四虎国产精品永久入口| 老少配老妇老熟女中文普通话| 日本东京热不卡一区二区| 久热中文字幕在线| 久久午夜无码免费| 人妻另类 专区 欧美 制服| 玩弄漂亮少妇高潮白浆| 成人av午夜在线观看| 东京热一精品无码av| 丰满少妇被猛烈进出69影院| 国产精品亚洲аv无码播放| 好男人官网资源在线观看| 久久人妻国产精品| 国内自拍偷拍一区二区三区| 天天爽夜夜爱| 亚洲天堂成人一区二区三区| 青河县| 国产av丝袜旗袍无码网站| 在线 欧美 中文 亚洲 精品| 无码人妻丰满熟妇奶水区码| 国产精品va无码一区二区 |