tangs vor 5 Jahren
Ursprung
Commit
9c9571ff32
2 geänderte Dateien mit 137 neuen und 0 gelöschten Zeilen
  1. 103 0
      AddTwoNumbers/main.go
  2. 34 0
      twoSum/main.go

+ 103 - 0
AddTwoNumbers/main.go

@@ -0,0 +1,103 @@
+package main
+
+import (
+	"fmt"
+	"strconv"
+)
+
+func main() {
+	//var l1 = &ListNode{
+	//	2, &ListNode{4, &ListNode{3, nil}},
+	//}
+	//var l2 = &ListNode{
+	//	5, &ListNode{6, &ListNode{4, nil}},
+	//}
+	var l1 = &ListNode{
+		9, nil,
+	}
+	fmt.Println(9 + 9999999991)
+	var l2 *ListNode
+	var l2Cuosor *ListNode
+	for i := 0; i < 10; i++ {
+		if i == 0 {
+			l2 = &ListNode{1, nil}
+			l2Cuosor = l2
+			continue
+		}
+
+		var temp = &ListNode{9, nil}
+		l2Cuosor.Next = temp
+		l2Cuosor = l2Cuosor.Next
+	}
+
+	//	[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
+	//[5,6,4]
+
+	var i int64 = 1000000000000000000000000000001
+	fmt.Println(i)
+	return
+
+	var result = addTwoNumbers(l1, l2)
+	listPrint(result)
+}
+
+/**
+ * Definition for singly-linked list.
+ * type ListNode struct {
+ *     Val int
+ *     Next *ListNode
+ * }
+ */
+type ListNode struct {
+	Val  int
+	Next *ListNode
+}
+
+func listPrint(list *ListNode) {
+	for list != nil {
+		fmt.Printf("%v", list.Val)
+		if list.Next == nil {
+			break
+		}
+		fmt.Printf(" -> ")
+		list = list.Next
+	}
+}
+
+func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
+	var l1Str, l2Str string
+	var l1Int, l2Int int64
+	var l1Temp, l2Temp = l1, l2
+	for l1Temp != nil {
+		l1Str = strconv.FormatInt(int64(l1Temp.Val), 10) + l1Str
+		l1Temp = l1Temp.Next
+	}
+	for l2Temp != nil {
+		l2Str = strconv.FormatInt(int64(l2Temp.Val), 10) + l2Str
+		l2Temp = l2Temp.Next
+	}
+
+	l1Int, _ = strconv.ParseInt(l1Str, 10, 64)
+	l2Int, _ = strconv.ParseInt(l2Str, 10, 64)
+
+	var num = strconv.FormatInt(l1Int+l2Int, 10)
+	fmt.Println("---------------", num, l1Str, l2Str)
+	var head = &ListNode{}
+	var cursor *ListNode
+	for i := len(num) - 1; i >= 0; i-- {
+		var val, _ = strconv.ParseInt(num[i:i+1], 10, 32)
+		var temp = &ListNode{}
+		temp.Val = int(val)
+		temp.Next = nil
+
+		if i == len(num)-1 {
+			head = temp
+			cursor = head
+			continue
+		}
+
+		cursor.Next = temp
+		cursor = cursor.Next
+	}
+	return head
+}

+ 34 - 0
twoSum/main.go

@@ -0,0 +1,34 @@
+package main
+
+import "fmt"
+
+func main() {
+
+	var nums = []int{2, 7, 11, 15}
+	var target = 10
+	fmt.Println(twoSum(nums, target))
+}
+
+func twoSum(nums []int, target int) []int {
+	var mark = map[int]int{}
+	for index, num := range nums {
+		if _, ok := mark[num]; ok {
+			continue
+		}
+		mark[num] = index
+	}
+	for index, num := range nums {
+		var _, ok = mark[target-num]
+		if !ok {
+			continue
+		}
+		if mark[target-num] == index {
+			continue
+		}
+		return []int{
+			index, mark[target-num],
+		}
+
+	}
+	return []int{}
+}