整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JavaScript 算法每日一題:加一

          JavaScript 算法每日一題:加一

          家好,很高興又見面了,我是姜茶的編程筆記,我們一起學習前端相關領域技術,共同進步,也歡迎大家關注、點贊、收藏、轉發,您的支持是我不斷創作的動力

          鐵子們!從 2024/07/26 開始,我們進入算法專題篇的學習啦 。學習計劃如下:

          1?? 每日一題;

          2?? 學習順序是由易到難;

          3?? 題目按照數據結構進行分類;

          4?? 每個類型的題目預計安排 100 道題(簡單/中等/困難各 33 道);

          題目描述

          給定一個由 整數 組成的 非空 數組所表示的非負整數,在該數的基礎上加一。

          最高位數字存放在數組的首位, 數組中每個元素只存儲單個數字。

          你可以假設除了整數 0 之外,這個整數不會以零開頭。

          示例 1:

          輸入:digits=[1,2,3]
          >
          輸出:[1,2,4]
          >
          解釋:輸入數組表示數字 123。

          示例 2:

          輸入:digits=[4,3,2,1]
          >
          輸出:[4,3,2,2]
          >
          解釋:輸入數組表示數字 4321。

          示例 3:

          輸入:digits=[0]
          >
          輸出:[1]

          提示:

          • 1 <=digits.length <=100
          • 0 <=digits[i] <=9

          分析/求解

          要解決這個問題,我們可以從數組尾部開始往前掃,逐位進位即可。最高位如果還有進位需要在數組里面第 0 位再插入一個 1 。以下是詳細的解釋和多種解決方法:

          方法一:遍歷加法

          通過從數組的末尾開始,逐位處理進位問題,直到處理完所有需要進位的情況。

          • 時間復雜度:O(n),其中 n 是數組的長度。我們需要遍歷數組中的每個元素。
          • 空間復雜度:O(1),只使用了常數級別的額外空間。
          var plusOne=function (digits) {
              for (let i=digits.length - 1; i >=0; i--) {
                  if (digits[i] < 9) {
                      digits[i]++;
                      return digits;
                  }
                  digits[i]=0;
              }
              digits.unshift(1);
              return digits;
          }

          方法二:遞歸法

          使用遞歸方法處理每一位上的加法和進位問題。這種方法在實際應用中不如方法一高效,但它展示了不同的思維方式。

          • 時間復雜度:O(n),其中 n 是數組的長度。每次遞歸調用處理一個元素。
          • 空間復雜度:O(n),遞歸調用棧的深度為 n。
          var plusOne=function (digits) {
              function helper(index) {
                  if (index===-1) {
                      digits.unshift(1);
                      return;
                  }
                  if (digits[index] < 9) {
                      digits[index]++;
                      return;
                  }
                  digits[index]=0;
                  helper(index - 1);
              }
              helper(digits.length - 1);
              return digits;
          }

          總結

          在實際應用中,遍歷加法是解決這個問題的最佳選擇,因為它不僅能在 O(n) 的時間復雜度內高效處理加一操作,而且實現簡單易懂。遞歸方法雖然展示了不同的思維方式,但在性能和實現復雜度上不如遍歷加法法優越。

          附件:


          最后

          如果有任何問題或建議,歡迎在評論區留言交流!祝你編程愉快!

          .HTML 介紹

          是網頁的后綴,txt 后綴是文本 ,py 后綴是 python ,html 后綴就是網頁的意思。我們如果想創建一個網頁的話,可以直接將文本的后綴改為 html 。HTMLSHI 超文本標記語言,是一種標識性的語言。它包括一系列標記標簽,通過這些標記標簽可以將網絡上的文檔格式統一,使分散的Internet資源連接為一個邏輯整體。

          1.html 的介紹

          頁面整體分為兩部分:

          一部分是head部分,主要是頁面的整體信息和配置,內容不會出現在瀏覽器內部。

          一部分是body部分,這部分內容則會在瀏覽器中展示出來

          我們使用 pycharm 創建一個 html ,打開后就是下圖模樣。


          (1)文檔類型聲明(默認的可以不用設置)

          <!DOCTYPE html>

          (2)開始標簽和結束標簽

          一般的標簽是成對出現的,一般稱第一個標簽是開始標簽,第二個是結束標簽。開始和結束標簽也稱為開放標簽和閉合標簽。

          開始標簽:

          <html lang="en">

          其中的 html 為根元素,是所有元素的基礎。lang 表示語言,en 表示英文。

          結束標簽:

          </html>

          (3)頭部標簽

          <head>
              <meta charset="UTF-8">
              <title>Title</title>
          </head>

          其中 utf-8 表示字符編碼格式,如果沒有寫這個就會發生亂碼。Title 表示文檔的標題。

          (4)身體標簽

          <body>
          
          </body>

          身體標簽是文檔的主題,可視化區域,所有的音頻,視頻,圖片,文字都可在其中搭建,相當于我們打開網頁時所看到內容。

          (5)標簽的特點

          標簽是由一對尖括號包裹單詞構成的,標簽要使用小寫。 一般的標簽是成對出現的,一般稱第一個標簽是開始標簽,第二個是結束標簽。開始和結束標簽也稱為開放標簽和閉合標簽。

          二.標簽

          標簽分為塊級標簽和內聯標簽(運行時點擊右上角的谷歌模式的小圓圈就可以)

          1.內容的書寫

          (1)塊級標簽(p)

          兩個 p 中間可隨意書寫內容

          <p>故事和酒,淘寶都有</p>

          (2)內聯標簽(span)

          <span>故事和酒,淘寶都有</span>

          完整代碼:

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
          </head>
          <body>
          <!-- 塊級標簽--> 
          <p>故事和酒,淘寶都有</p>
          <!--內聯標簽-->
          <span>故事和酒,淘寶都有</span>
          </body>
          </html>

          運行后:


          運行后看不出塊級標簽和內聯標簽的區別,所有我們使用檢查。右擊后點擊檢查


          在點擊下圖中左上角的方框箭頭,變成藍色說明正在運行,之后就可以查看有關的數據了


          無需點擊,只要將箭頭放在文字上就會出現相關內容



          上面兩圖可以明顯看出兩句話的寬度不相同。

          塊級標簽:在不設置寬度的情況下,寬度始終和瀏覽器寬度保持一致。

          內聯標簽:寬度和內容有關

          2.設置高度寬度

          <p style="width: 500px;height: 50px;">故事和酒,淘寶都有</p>
          
          <span style="width: 500px;height: 50px;">故事和酒,淘寶都有</span>
          



          如圖所示,只有塊級標簽寬高改變了,內聯標簽不改變。由此可得,塊級標簽設置寬高有效,內聯標簽設置寬高無效。

          3.多個標簽同時存在

          <body>
          <!-- 塊級標簽-->
          <p>故事和酒,淘寶都有</p>
          <p>故事和酒,淘寶都有</p>
          <!--內聯標簽-->
          <span>故事和酒,淘寶都有22</span>
          <span>故事和酒,淘寶都有22</span>
          </body>


          多個塊級標簽同時存在的情況下,排列方式從上往下
          多個內聯標簽同時存在的情況下,排列方式從左往右

          4.是否包含

          <body>
          <!-- 塊級標簽-->
          <p>故事和酒,淘寶都有
              <span>故事和酒,淘寶都有22</span>
          </p>
          
          <!--內聯標簽-->
          <span>故事和酒,淘寶都有22
              <p>故事和酒,淘寶都有</p>
          </span>
          
          </body>


          由此可知,塊級標簽可以包含內聯標簽,但內聯標簽不可以包含塊級標簽,只可以包含內聯標簽。

          5.塊級標簽與內聯標簽相互轉換

          (1)塊級轉內聯

          <body>
          <!--將塊級標簽轉化成內聯標簽-->
          <p style="display: inline">故事和酒,淘寶都有</p>
          <p style="display: inline">故事和酒,淘寶都有</p>
          
          </body>


          (2)內聯轉塊級(display: block)

          內聯轉為塊級之后,具有了塊級的性質。

          <span style="display: block">故事和酒,淘寶都有222</span>
          <span style="display: block">故事和酒,淘寶都有222</span>


          (3)內聯塊元素(display: inline-block)

          內聯塊元素包含了內聯標簽和塊級標簽的部分特性。

          <span style="display: inline-block">故事和酒,淘寶都有333</span>
          <span style="display: inline-block;height: 50px">故事和酒,淘寶都有333</span>


          (4)段落標簽(p)

          <!--段落標簽-->
          <p></p>

          (5)標題標簽(h)

          、標簽理解

          1.HTML標簽由尖括號包圍關鍵詞。通常是成對出現的,稱為雙標簽。例如<html>(開始標簽)和</html>(結束標簽)。有些特殊標簽為單個標簽,稱為單標簽。例如<br/>

          2.標簽關系有包含關系和并列關系

          3.標簽的含義(語義):標簽是用來干嘛的。(在適合的地方給一個合理的標簽可以使頁面結構更清晰)

          4.每個網頁都會有一個基本的結構標簽(也稱為骨架標簽),HTML頁面也稱為HTML文檔

          二、基本結構標簽



          1.<html>標簽是根標簽,頁面中最大的標簽

          2.<head>標簽是文檔的頭部,在<head>標簽內必須設置<title>標簽

          3.<title>標簽是文檔的標題,網頁的標題

          4.<body>標簽是文檔的主體,文檔的所有內容,網頁內容



          三、常見標簽

          1.標題標簽<h1>-<h6>(head的縮寫)

          (1) 語義:作為標題使用,并依據重要性遞減(2) 特點:a.加了標題標簽文字會變粗,字號依次變大 b.一個標題獨占一行


          2.段落標簽<p>(paragraph的縮寫)

          (1) 語義:可以把HTML文檔分割為若干段落

          (2) 特點:a.一個段落根據瀏覽器窗口的大的自動換行 b.段落之間有大的空隙


          3.換行標簽<br/>(break的縮寫)

          (1) 語義:強制換行

          (2) 特點:a.<br/>是個單標簽 b.<br/>只是簡單重新開始一行與段落不同


          4.文本格式標簽(為文字設置粗體,斜體或下劃線等效果,語義:突出重要性)

          (1) 加粗:<strong></strong>或<b></b> 推薦使用<strong>標簽,語義更強烈

          (2) 傾斜:<em></em>或<i></i> 推薦使用<em>標簽,語義更強烈(emphasize)

          (3) 刪除線:<del></del>或<s></s> 推薦使用<del>標簽,語義更強烈(delete)

          (4) 下劃線:<ins></ins>或<u></u> 推薦使用<ins>標簽,語義更強烈(insert)


          5.<div>和<span>標簽(沒有語義,是一個盒子,用來裝內容 division span)

          特點:a.<div>標簽用來布局,一行只能放一個<div>,是個大盒子 b.<span>標簽用來布局,一行可以有多個<span>,是個小盒子


          上一篇:了不起的 Unicode
          下一篇:5.HTML列表元素
          主站蜘蛛池模板: 日韩精品一区二区三区中文版 | 亚洲欧美国产国产综合一区 | 无码人妻一区二区三区免费看| 奇米精品一区二区三区在| 精品国产毛片一区二区无码| 免费日本一区二区| 国产精品毛片VA一区二区三区 | 亚洲日本中文字幕一区二区三区| 日韩一区二区三区免费体验| 无码囯产精品一区二区免费| 色综合久久一区二区三区| 好看的电影网站亚洲一区| 无码人妻精一区二区三区| 无码日韩精品一区二区免费暖暖 | 国产一区二区在线观看视频| 无码人妻一区二区三区免费看 | 久久国产精品免费一区| 国产一区美女视频| 国产成人久久一区二区不卡三区| 亚洲福利视频一区二区三区| 国产一区二区三区久久| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 一区二区无码免费视频网站| 人妻久久久一区二区三区| 夜夜添无码一区二区三区| 久久精品无码一区二区三区日韩 | 色窝窝免费一区二区三区| 精品不卡一区二区| 日本视频一区在线观看免费| 精品无码人妻一区二区免费蜜桃| 无码人妻精品一区二区三18禁| 搜日本一区二区三区免费高清视频 | 99精品国产一区二区三区不卡| 日韩电影一区二区| 日韩人妻一区二区三区免费 | 久久精品国产一区二区| 亚洲爽爽一区二区三区| 又硬又粗又大一区二区三区视频| 一区二区三区无码视频免费福利| 久久精品一区二区免费看| 人妻无码第一区二区三区|