Go語言程式:去除陣列中的重複元素


在本教程中,我們將學習如何編寫一個Go語言程式來去除陣列中的重複元素。去除重複項是指編寫一個程式,刪除重複多次出現的數值。

使用外部函式去除陣列中的重複值

以下程式碼演示瞭如何使用使用者定義函式去除陣列中的重複值。

演算法

步驟1 − 首先,我們需要匯入fmt包。

步驟2 − 現在,建立一個名為removeDuplicate()的函式,該函式接受一個數組作為引數,並在去除所有重複項後返回一個數組。

步驟3 − 此函式使用for迴圈迭代陣列。

步驟4 − 在這裡,我們建立了一個鍵為整數、值為布林值的對映,預設情況下,map_var儲存的值為false。

步驟5 − 在陣列的每次迭代中,我們檢查map_var的值,如果為false,則取該值並將其追加到上面建立的新陣列中。

步驟6 − 重複此過程,直到檢查所有陣列值,然後返回形成的新陣列。

步驟7 − 現在,我們需要啟動主函式。

步驟8 − 初始化一個整數陣列arr,向其中儲存值,並在螢幕上列印陣列。

步驟9 − 現在,透過將上面建立的陣列作為引數傳遞給它來呼叫removeDuplicate函式。

步驟10 − 將獲得的結果儲存在一個名為result的陣列中,並在螢幕上列印該陣列。

示例

package main
import "fmt"

// making a function named removeDuplicate()
func removeDuplicate(arr [8]int) []int {
   map_var := map[int]bool{}
   result := []int{}
   for e := range arr {
      if map_var[arr[e]] != true {
         map_var[arr[e]] = true
         result = append(result, arr[e])
      }
   }
   return result
}
func main() {
   arr := [8]int{1, 2, 2, 4, 4, 5, 7, 5}
   fmt.Println("The unsorted array entered is:", arr)
   result := removeDuplicate(arr)
   fmt.Println("The array obtained after removing the duplicate values is:", result)
}

輸出

The unsorted array entered is: [1 2 2 4 4 5 7 5]
The array obtained after removing the duplicate values is: [1 2 4 5 7]

使用迴圈去除陣列中的重複元素

現在讓我們來看另一個示例,說明如何在不使用對映的情況下從陣列中刪除重複項。

演算法

步驟1 − 匯入fmt包,允許我們在螢幕上列印任何內容。

步驟2 − 呼叫main()函式。

步驟3 − 初始化並在整數陣列中儲存元素,並在螢幕上列印。

步驟4 − 使用for迴圈迭代陣列,以檢查當前元素是否等於下一個元素。

步驟5 − 如果兩個元素相等,則使用for迴圈刪除重複元素,並透過執行size--將陣列大小減1。

步驟6 − 迭代整個陣列後,使用fmt.Println()函式在螢幕上列印獲得的新陣列的元素。

示例

package main
import "fmt"
func main() {
   arr := []int{1, 2, 2, 4, 4, 5, 7, 5}
   fmt.Println("The unsorted array entered is:", arr)
   size := len(arr)
   for i := 0; i < size; i++ {
      for j := i + 1; j < size; j++ {
         if arr[i] == arr[j] {
            for k := j; k < size-1; k++ {
               arr[k] = arr[k+1]
            }
            size--
            j--
         }
      }
   }
   fmt.Println("The elements of array obtained after removing the duplicate values is:")
   for i := 0; i < size; i++ {
      fmt.Println(arr[i])
   }
}

輸出

The unsorted array entered is: [1 2 2 4 4 5 7 5]
The elements of array obtained after removing the duplicate values is:
1
2
4
5
7

使用Append()函式去除字串陣列中的重複值

在這個程式中,我們將看到如何使用Append函式()從字串陣列中刪除重複值。

語法

func append(slice []Type, elems ...Type) []Type

Go語言中的append函式用於向陣列切片新增元素。它可以接受多個引數。第一個是我們想要追加的陣列,後面跟著我們想要追加的值。然後,該函式返回包含已新增值的新陣列。

示例

package main
import (
   "fmt"
   "sort"
)
func removeDuplicate(strs []string) []string {
   sort.Strings(strs)
   for i := len(strs) - 1; i > 0; i-- {
      if strs[i] == strs[i-1] {
         strs = append(strs[:i], strs[i+1:]...)
      }
   }
   return strs
}
func main() {
   arr := []string{"a", "b", "b", "c", "b", "d"}
   fmt.Println("The unsorted array entered is:", arr)
   result := removeDuplicate(arr)
   fmt.Println("The array obtained after removing the duplicate values is:", result)
}

輸出

The unsorted array entered is: [a b b c b d]
The array obtained after removing the duplicate values is: [a b c d]

結論

我們已經成功編譯並執行了一個Go語言程式,用於去除陣列中的重複元素,並附帶示例。

更新於:2023年1月2日

459 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告