欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript實現兩個數組的交集

 更新時間:2022年03月25日 16:32:25   作者:掘金安東尼  
這篇文章主要介紹了JavaScript實現兩個數組的交集,給定兩個數組???nums1???和??nums2??返回它們的交集,輸出結果中的每個元素一定是唯一的,下文詳細介紹,需要的小伙伴可以參考一下

兩個數組的交集 I

給定兩個數組 ??nums1??? 和 ??nums2?? ,返回 它們的交集 。輸出結果中的每個元素一定是 唯一 的。我們可以 不考慮輸出結果的順序 。

示例 1:

輸入:nums1 = [1,2,2,1], nums2 = [2,2]
輸出:[2]

示例 2:

輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
輸出:[9,4]
解釋:[4,9] 也是可通過的

注:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

解題思路:

如果兩個數組是有序的,則可以使用雙指針的方法得到兩個數組的交集。

首先對兩個數組進行排序,然后使用兩個指針遍歷兩個數組??梢灶A見的是加入答案的數組的元素一定是遞增的,為了保證加入元素的唯一性,我們需要額外記錄變量 pre 表示上一次加入答案數組的元素。

初始時,兩個指針分別指向兩個數組的頭部。每次比較兩個指針指向的兩個數組中的數字,如果兩個數字不相等,則將指向較小數字的指針右移一位,如果兩個數字相等,且該數字不等于 pre ,將該數字添加到答案并更新 pre 變量,同時將兩個指針都右移一位。當至少有一個指針超出數組范圍時,遍歷結束。

JavaScript 實現:

var intersection = function(nums1, nums2) {
nums1.sort((x, y) => x - y);
nums2.sort((x, y) => x - y);
const length1 = nums1.length, length2 = nums2.length;
let index1 = 0, index2 = 0;
const intersection = [];
while (index1 < length1 && index2 < length2) {
const num1 = nums1[index1], num2 = nums2[index2];
if (num1 === num2) {
// 保證加入元素的唯一性
if (!intersection.length || num1 !== intersection[intersection.length - 1]) {
intersection.push(num1);
}
index1++;
index2++;
} else if (num1 < num2) {
index1++;
} else {
index2++;
}
}
return intersection;
};

兩個數組的交集 II

與 I 相通的類似的一道題:

給你兩個整數數組 nums1 和 nums2 ,請你以數組形式返回兩數組的交集。返回結果中每個元素出現的次數,應與元素在兩個數組中都出現的次數一致(如果出現次數不一致,則考慮取較小值)??梢圆豢紤]輸出結果的順序。

示例 1:

輸入:nums1 = [1,2,2,1], nums2 = [2,2]
輸出:[2,2]

示例 2:

輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
輸出:[4,9]

解題思路:

如果兩個數組是有序的,則可以使用雙指針的方法得到兩個數組的交集。

首先對兩個數組進行排序,然后使用兩個指針遍歷兩個數組。

初始時,兩個指針分別指向兩個數組的頭部。每次比較兩個指針指向的兩個數組中的數字,如果兩個數字不相等,則將指向較小數字的指針右移一位,如果兩個數字相等,將該數字添加到答案,并將兩個指針都右移一位。當至少有一個指針超出數組范圍時,遍歷結束。

JavaScript 實現:

/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersect = function(nums1, nums2) {
//將兩個數組從小到大排序
nums1.sort((a,b) => a-b)
nums2.sort((a,b) => a-b)
let res = []
let key1 = 0, key2 = 0, index = 0
//在兩個指針不達邊界的前提下不斷推進
while(key1 < nums1.length && key2 < nums2.length){
//判斷nums1[key1]與nums2[key2]的大小,分出大于小于等于三種情況
if(nums1[key1] < nums2[key2]) key1++
else if(nums1[key1] > nums2[key2]) key2++
else{
res[index++] = nums1[key1]
key1++
key2++
}
}
return res
};

到此這篇關于JavaScript實現兩個數組的交集 的文章就介紹到這了,更多相關JS數組交集 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JavaScript解析JSON數據示例

    JavaScript解析JSON數據示例

    這篇文章主要介紹了JavaScript解析JSON數據,涉及javascript針對json格式數據的讀取、遍歷相關操作技巧,需要的朋友可以參考下
    2019-07-07
  • 游戲開發(fā)中如何使用CocosCreator進行音效處理

    游戲開發(fā)中如何使用CocosCreator進行音效處理

    這篇文章主要介紹了游戲開發(fā)中如何使用CocosCreator進行音效處理,并對音效組件進行封裝,方便以后使用,同學們看完之后,一定要親手實驗一下
    2021-04-04
  • JS求Number類型數組中最大元素方法

    JS求Number類型數組中最大元素方法

    這篇文章主要介紹了如何用JS求Number類型數組中最大元素
    2018-04-04
  • JS實現遮罩層效果的簡單實例

    JS實現遮罩層效果的簡單實例

    這篇文章介紹了JS實現遮罩層效果的簡單實例,有需要的朋友可以參考一下
    2013-11-11
  • 微信小程序 button樣式設置為圖片的方法

    微信小程序 button樣式設置為圖片的方法

    這篇文章主要介紹了微信小程序 button 的樣式設置為圖片的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • js實現禁止中文輸入的方法

    js實現禁止中文輸入的方法

    這篇文章主要介紹了js實現禁止中文輸入的方法,需要的朋友可以參考下
    2015-01-01
  • JavaScript Proxy基本用法詳解

    JavaScript Proxy基本用法詳解

    這篇文章主要介紹了JavaScript Proxy基本用法,Proxy對象用于創(chuàng)建一個對象的代理,從而實現基本操作的攔截和自定義,如屬性查找、賦值、枚舉、函數調用等
    2022-12-12
  • 利用location.hash實現跨域iframe自適應

    利用location.hash實現跨域iframe自適應

    其他一些類似js跨域操作問題也可以按這個思路去解決,需要的朋友可以測試下。
    2010-05-05
  • JavaScript 數組- Array的方法總結(推薦)

    JavaScript 數組- Array的方法總結(推薦)

    下面小編就為大家?guī)硪黄狫avaScript 數組- Array的方法總結(推薦)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • js驗證身份證號碼記錄的方法

    js驗證身份證號碼記錄的方法

    在一些需要填寫身份證的表單網頁中,需要對身份證的輸入做一個驗證,于是,我記錄下了自己寫的驗證。這篇文章主要介紹了js驗證身份證號碼記錄的方法,需要的朋友可以參考下
    2019-04-04

最新評論