<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >[success] # Leetcode -- 26. 刪除有序數組中的重復項 * 題目描述: 給你一個 升序排列 的數組 nums ,請你 原地 刪除重復出現的元素,使每個元素 只出現一次 ,返回刪除后數組的新長度。元素的 相對順序 應該保持 一致 。 由于在某些語言中不能改變數組的長度,所以必須將結果放在數組nums的第一部分。更規范地說,如果在刪除重復項之后有 k 個元素,那么?nums?的前 k 個元素應該保存最終結果。 將最終結果插入?nums 的前 k 個位置后返回 k 。 不要使用額外的空間,你必須在 原地 修改輸入數組 并在使用 O(1) 額外空間的條件下完成。 * 示例 1: ~~~ 輸入:nums = [1,1,2] 輸出:2, nums = [1,2,_] 解釋:函數應該返回新的長度 2 ,并且原數組 nums 的前兩個元素被修改為 1, 2 。不需要考慮數組中超出新長度后面的元素。 ~~~ * 示例 2: ~~~ 輸入:nums = [0,0,1,1,1,2,2,3,3,4] 輸出:5, nums = [0,1,2,3,4] ~~~ * 解釋:函數應該返回新的長度 5 , 并且原數組 nums 的前五個元素被修改為 0, 1, 2, 3, 4 。不需要考慮數組中超出新長度后面的元素。 ? 來源:力扣(LeetCode) 鏈接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array 著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。 >[danger] ##### 第一次解題思路暴力倒序刪除 * 只要當前值和他前一個值相等,就將當前值刪除 ~~~ /** * @param {number[]} nums * @return {number} */ var removeDuplicates = function(nums) { for(let i = nums.length-1;i>0;i--){ if(nums[i] === nums[i-1]){ nums.splice(i,1) } } return nums.length }; ~~~ >[danger] ##### 第二次解題思路暴力額外空間 * 去申請一個額外空間的數組用來記錄,此方法會額外開辟新的內存空間,這種思路失敗,因為不符合題中說的空間復雜度使用 **O(1)** * 類似解題比較前一個和后一個值不同才放入額外空間中 ~~~ /** * @param {number[]} nums * @return {number} */ var removeDuplicates = function(nums) { const ls = [] for(let i=0;i<nums.length;i++){ if(!ls.includes(nums[i])) ls.push(nums[i]) } return ls.length }; ~~~ >[info] ## 快慢指針解法 * 定義兩個指針,進行比較如快慢指針值不同進行位置交換 ![](https://img.kancloud.cn/a4/f3/a4f33f5e1f0e18efc8cbb8e9d141b811_1129x758.png) >[danger] ##### js ~~~ /** * @param {number[]} nums * @return {number} */ var removeDuplicates = function(nums) { if (nums.length == 0) return 0 let slow = 0 let fast = 1 while(fast < nums.length){ if(nums[slow] !== nums[fast]){ ++slow nums[slow] = nums[fast] } ++fast } return slow+1 }; ~~~ >[danger] ##### java ~~~ class Solution { public int removeDuplicates(int[] nums) { int fast = 1; int slow = 0; while(fast < nums.length){ if(nums[fast] != nums[slow]){ slow ++; nums[slow] = nums[fast]; } fast ++; } return slow +1; } } ~~~ >[info] ## 比較有意思想法 ~~~ /** * @param {number[]} nums * @return {number} */ var removeDuplicates = function(nums) { if(nums.length === 0 || nums.length === 1) return nums.length /** 采用set集合將nums重復的元素刪除 這里需要注意,針對本題需要在原數組進行操作,并且后臺直接調用原數組信息 因此,需要實現nums值的修改 因此,需要注意 ES6 方法 Array.from() 是不會修改實參(即使是引用類型的傳遞)的 因此,這里通過遍歷set集合直接對nums數組進行操作,實現對實參的修改 */ let i = 0 for (let key of Array.from(new Set(nums))) { nums[i++] = key } return i }; ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看