Prechádzať zdrojové kódy

add 'Remove Duplicates from Sorted Array'

tangs 5 rokov pred
rodič
commit
e2a59de30d

+ 40 - 0
tags/array/removeDuplicatesfromSortedArray/main.go

@@ -0,0 +1,40 @@
+package main
+
+import "fmt"
+
+func main() {
+	var nums []int
+
+	nums = []int{1, 1, 2}
+	fmt.Println(removeDuplicates(nums), nums)
+
+	nums = []int{1, 1, 2, 2}
+	fmt.Println(removeDuplicates(nums), nums)
+
+	nums = []int{1, 1, 2, 2, 2, 3, 3}
+	fmt.Println(removeDuplicates(nums), nums)
+
+	nums = []int{}
+	fmt.Println(removeDuplicates(nums), nums)
+
+	nums = []int{0, 0, 1, 1, 1, 2, 2, 3, 3, 4}
+	fmt.Println(removeDuplicates(nums), nums)
+
+}
+
+func removeDuplicates(nums []int) int {
+	var cursor, count int = 0, 0
+	for i := 0; i < len(nums); i++ {
+		if i == 0 {
+			count++
+			continue
+		}
+		if nums[i] == nums[cursor] {
+			continue
+		}
+		cursor++
+		count++
+		nums[cursor] = nums[i]
+	}
+	return count
+}

+ 35 - 0
tags/array/removeDuplicatesfromSortedArray/main_optimize.go

@@ -0,0 +1,35 @@
+package main
+
+import "fmt"
+
+func main() {
+	var nums []int
+
+	nums = []int{1, 1, 2}
+	fmt.Println(removeDuplicates(nums), nums)
+
+	nums = []int{1, 1, 2, 2}
+	fmt.Println(removeDuplicates(nums), nums)
+
+	nums = []int{1, 1, 2, 2, 2, 3, 3}
+	fmt.Println(removeDuplicates(nums), nums)
+
+	nums = []int{}
+	fmt.Println(removeDuplicates(nums), nums)
+
+	nums = []int{0, 0, 1, 1, 1, 2, 2, 3, 3, 4}
+	fmt.Println(removeDuplicates(nums), nums)
+
+}
+
+func removeDuplicates(nums []int) int {
+	var cursor = 0
+	for i := 1; i < len(nums); i++ {
+		if nums[cursor] == nums[i] {
+			continue
+		}
+		cursor++
+		nums[cursor] = nums[i]
+	}
+	return cursor + 1
+}