iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
0
自我挑戰組

菜雞的30天工程師轉職日記--Leetcode系列 第 3

Day 3 -- Remove Duplicates from Sorted Array

  • 分享至 

  • xImage
  •  

Day3 Leetcode Array系列----Remove Duplicates from Sorted Array

本次題目 Remove Duplicates from Sorted Array by Ruby

這次希望整理過數字陣列,希望得到一個去除重複元素的陣列(uniq_arr),這個陣列的長度(uniq_arr_length),再得到一個把剔除數字往後擺的陣列(rearranged)

given_nums1 = [1,1,2] 
uniq_arr=[1,2] uniq_arr_length = 2 
rearranged = [1,2,1]
given_nums2 = [0,0,1,1,1,2,2,3,3,4]

思考路線一

  1. 先判斷傳入的陣列是不是空陣列
  2. 用 ruby array.uniq 去除重複元素,得到 uniq_arr
  3. 用 uniq_arr 去跑迴圈,確認每個元素在原陣列中分別有幾個
  4. 準備一個新陣列 (rearranged),把 uniq_arr 裝入,依照 uniq_arr 元素順序把重複元素加回來,使得原陣列與 rearranged元素內容一致

Coding Time

given_nums1 = [1,1,2]
given_nums2 = [0,0,1,1,1,2,2,3,3,4]

def get_length (arr)
  if arr.length == 0
    return 'Nothing is given.'
  end
  
  uniq_arr = arr.uniq
  uniq_arr_long = arr.uniq.length
  rearranged = uniq_arr
  
  uniq_arr.each do |num|
   show_times = arr.count(num)
   
   if show_times-1 == 0
    next
   else
    rearranged = rearranged + ( [num] * ( show_times - 1 ) )
   end
  
  end
  
  p "unique array  #{uniq_arr}"
  p "unique array length #{uniq_arr_long}"
  p "rearranged array #{rearranged}"
  rearranged
  return rearranged
end

get_length([1,1,2])
"unique array  [1, 2]"
"unique array length 2"
"rearranged array [1, 2, 1]"

get_length([0,0,1,1,1,2,2,3,3,4])
"unique array  [0, 1, 2, 3, 4]"
"unique array length 5"
"rearranged array [0, 1, 2, 3, 4, 0, 1, 1, 2, 3]"

我先用 if 判斷傳入陣列的長度,空陣列就回傳 'Nothing is given.'

用 uniq 把陣列重複元素剔除,計算長度,再把 uniq 塞入 rearranged

用迴圈去跑 uniq_arr 就可以依照順序抓出存在於 arr 的元素,再去計算這個元素於 arr 中重複幾次

把該元素重複次數 -1 塞到 rearranged (-1 是因為該元素有一個已經被加到前端了)

把整理後的陣列回傳

今天到此為止,有任何問題請在下方留言或透過email、GitHub聯絡我,感謝閱讀

Daily kitty


上一篇
Day 2 -- Container With Most Water
下一篇
Day 4 -- Maximum Subarray
系列文
菜雞的30天工程師轉職日記--Leetcode30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言