iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
0
Software Development

挑戰用JavaScript刷LeetCode的Top Interview Questions系列 第 5

刷LeetCode-Top Interview Questions 陣列篇5

  • 分享至 

  • xImage
  •  

主題:Array

Intersection of Two Arrays II

比較兩陣列,找出兩者共同element,並回傳,若元素重複出現也照實回傳,回傳的陣列順序以第一個為準

思考邏輯:使用include(Ruby叫include?,JavaScript叫includes)判斷nums2中是否有該元素(nums1[index]),若沒有則將其從nums1中刪除,若有的話將其從nums2中刪除(避免重複判斷),最後回傳nums1。

Ruby:

def intersect(nums1, nums2)
 
  if nums1.length > nums2.length
    (0..(nums1.length)-1).each do |index|
      if !nums2.include?(nums1[index]) 
        nums1[index]=""
      else
        nums2[nums2.index(nums1[index])]=""
      end
    end
    nums1.delete("")
  else
    (0..(nums2.length)-1).each do |index|
      if !nums2.include?(nums1[index]) && nums1[index] != nil
        nums1[index]=""
      elsif nums1[index] != nil
        nums2[nums2.index(nums1[index])]=""
      end
    end
    nums1.delete("")
  end  
  
  nums1
    
end

JavaScript:

var intersect = function(nums1, nums2) {
    if (nums1.length > nums2.length){
        for(let i=0; i<nums1.length; i++){
            if(!nums2.includes(nums1[i])){
                nums1.splice(i, 1)
                i-=1
            }else{
                nums2[nums2.indexOf(nums1[i])] = ""
            }
        }
    }else {
        for(let i=0; i<nums2.length; i++){
            if(!nums2.includes(nums1[i]) && nums1[i] !== undefined){
                nums1.splice(i, 1)
                i-=1
            }else if(nums1[i] !== undefined){
                nums2[nums2.indexOf(nums1[i])] = ""
            }
        }
    }
    return nums1
};

小結:

  • JavaScript與Ruby寫法基本上差不多,只有一些語法上的不同;Ruby的Array.index(element)會回傳element在該陣列的位置,若沒有該element,則回傳nil,而在JavaScript中叫做indexOf。
  • 歡迎大家分享自己的寫法喔!! : )

上一篇
刷LeetCode-Top Interview Questions 陣列篇4
下一篇
刷LeetCode-Top Interview Questions 陣列篇6
系列文
挑戰用JavaScript刷LeetCode的Top Interview Questions7
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言