Ruby解题分享--Remove Duplicates from Sorted List

哎~~心法没有,拳法太弱....


Remove Duplicates from Sorted List

题目连结:https://leetcode.com/problems/remove-duplicates-from-sorted-list/
题目重点:是否了解Linked List。

wiki-链结串列
wiki-单向连结串列

这题会在於是否了解怎麽处理资料型态,Array与Linked List的差异。
由於我还不够熟悉Linked List,无法正确分享介绍Linked List内容。

从结果来解

[1, 1, 2]的Linked List回传[1, 2],
那我们多设一个方法,抓入每个node的值就好,但是重复的不要。
重点在於要知道1, 1, 2是每个node的值,要知道所有节点的值需要用ListNode这个类别内建立好的方法来抓取。
可以在leetcode上操作Run code来看

def delete_duplicates(head)
  p head.val  #=> 1
  p head.next.val #=> 1
  p head.next.next.val #=> 2
  p head.next.next.next #=>nil
end

解法:

def delete_duplicates(head)
  return [] if head.nil?   #7, 跑答案,发现还有一个测试例子是[]
  @arr = []                #2,建立一个预设是空阵列的实体
  val_to_arr(head)         #5,呼叫抓取值方法
  @arr.uniq                 #6,[1, 1, 2]变阵列了,uniq方法就回来了。
end

def val_to_arr(head)      #1,先定义一个抓取值的方法
  @arr << head.val         #3.抓取方法的流程
  val_to_arr(head.next) if head.next  #4.抓取到跑到nil为止,method写method,回圈。
end

当然,如果遇到希望我们维持Linked List资料型态做处理的话,这样解不行。
最近看别人解答,发现不少人会这样处理一些特别的资料型态,我还感受不到好还是不好,但是能解开就很厉害了。

保持资料型态来解,以Linked List的特点来解

我自己解只解到

def delete_duplicates(head)
  while head&.next  
    if head.val == head.next.val
      head.next = head.next.next
    else
      head = head.next
    end
  end 
  head
end

查高手们解答如下。

def delete_duplicates(head)
  
  new_head = head #如果不了解Linked list的特性,应该就是卡在这一步。
  
  while new_head&.next  #new_head != nil && new_head.next != nil
    if new_head.val == new_head.next.val
      new_head.next = new_head.next.next
    else
      new_head = new_head.next
    end
  end  
  
  head
end

不懂的事情不要装懂,无法解释的事情算不懂。
网路上很多资讯,我正在努力了解中,希望有一天能解释并分享Linked List为何。
我就菜!


<<:  在 Debian 11 上直接用 Fcitx 5 与呒虾米

>>:  The way of flushing QNAP DOM

创建App-讯息界面

创建App-讯息界面 今天进行讯息界面,本界面会使用Button、Text Field等基本UI来建...

Day 26 介绍 vite

vite 是 Vue.js 的作者所做的一个新的 bundler ,如果你有用过应该会知道,它最特别...

Day20 样式变化(动画4)

元件间的转换 在元素间的转换可以更加简单,,因为有了这一个动态组件 当按下单选键A会出现Compon...

学习Python纪录Day19 - 开启Document物件

开启Document物件 doc = doc.Document("档名.docx"...

【Day25】Git 版本控制 - SHA-1 是什麽

前面在讲要查询 commit 时要看他的 SHA-1 码,这个 SHA-1 到底是什麽!今天就来补充...