演算法 陣列指標問題

2021-10-10 02:59:23 字數 2353 閱讀 2061

88. 合併兩個有序陣列

給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。

說明:初始化 nums1 和 nums2 的元素數量分別為 m 和 n 。

你可以假設 nums1 有足夠的空間(空間大小大於或等於 m + n)來儲存 nums2 中的元素。

示例:輸入:

nums1 = [1,2,3,0,0,0], m = 3

nums2 = [2,5,6], n = 3

輸出:[1,2,2,3,5,6]

審題

解題思路

建立兩個指標,從尾部開始比較,為什麼從尾部開始呢?

為了避免搬移陣列

搬移陣列是說,如果從小到大比較並移動元素的話,需要將元素向後串移

var

merge

=function

(nums1, m, nums2, n)

else}if

(m <

0&& n >=0)

}return nums1;

// 根據題意要合併nums2到nums1,返回nums1

};

let len = m + n;

// m+n是nums1的長度,而且這個就是上面的尾指標 ,但是用的時候要先--

while

(n >0)

// 誰大就把誰放在尾指標位置

nums1[

--len]

= nums1[m -1]

>= nums2[n -1]

? nums1[

--m]

: nums2[

--n];}

return nums1

給定乙個包含 n + 1 個整數的陣列 nums,其數字都在 1 到 n 之間(包括 1 和 n),可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。

示例 1:

輸入: [1,3,4,2,2]

輸出: 2

示例 2:

輸入: [3,1,3,4,2]

輸出: 3

說明:不能更改原陣列(假設陣列是唯讀的)。

只能使用額外的 o(1) 的空間。

時間複雜度小於 o(n2) 。

陣列中只有乙個重複的數字,但它可能不止重複出現一次。

var

findduplicate

=function

(nums)

)for

(let i =

0; i1; i++)}

return-1

};

var

findduplicate

=function

(nums)

//slow 從起點出發, fast 從相遇點出發, 一次走一步

slow =0;

while

(slow != fast)

return slow;

};

給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。

示例:輸入: [0,1,0,3,12]

輸出: [1,3,12,0,0]

說明:必須在原陣列上操作,不能拷貝額外的陣列。

儘量減少操作次數。

var

movezeroes

=function

(nums)

}return nums

};

給定乙個包含紅色、白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。

此題中,我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。

注意:不能使用**庫中的排序函式來解決這道題。

示例:輸入: [2,0,2,1,1,0]

輸出: [0,0,1,1,2,2]

高階:乙個直觀的解決方案是使用計數排序的兩趟掃瞄演算法。

首先,迭代計算出0、1 和 2 元素的個數,然後按照0、1、2的排序,重寫當前陣列。

你能想出乙個僅使用常數空間的一趟掃瞄演算法嗎?

思路

其實可以參照上一題,就是增加了乙個擋板而已

var

sortcolors

=function

(nums)

if(nums[index]==2

)}return nums

};

演算法 陣列連乘問題

乙個程度為n的陣列,現在要令 a 0 a 1 a 2 a n 1 a 1 a 0 a 2 a n 1 a 2 a 0 a 1 a n 1 a n 1 a 0 a 2 a n 2 條件是不能用除法,時間複雜度必須是線性。觀察一下題目,每乙個元素 i 都被更新成了a 0 到a n 1 除去 i 下標元素...

玩轉演算法 陣列問題

陣列問題 排序 選擇排序 插入排序 歸併排序 快速排序 查詢 二分查詢法 資料結構 棧 佇列 堆 如何寫出正確的程式 明確變數的含義 迴圈不變數 小資料量除錯 大資料量測試 leetcode 283.move zeros問題 給定乙個陣列nums,寫乙個函式,將函式中所有的0挪到陣列的末尾,而維持其...

簡單演算法 陣列

1.給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。param nums return var removeduplicates function nums prices return var maxprofit function prices pa...