添加 problem 328

This commit is contained in:
YDZ
2019-04-01 02:59:59 +08:00
parent db78f1a2c1
commit dba20afe12
3 changed files with 134 additions and 0 deletions

View File

@ -0,0 +1,32 @@
package leetcode
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func oddEvenList(head *ListNode) *ListNode {
oddHead := &ListNode{Val: 0, Next: nil}
odd := oddHead
evenHead := &ListNode{Val: 0, Next: nil}
even := evenHead
count := 1
for head != nil {
if count%2 == 1 {
odd.Next = head
odd = odd.Next
} else {
even.Next = head
even = even.Next
}
head = head.Next
count++
}
even.Next = nil
odd.Next = evenHead.Next
return oddHead.Next
}

View File

@ -0,0 +1,72 @@
package leetcode
import (
"fmt"
"testing"
)
type question328 struct {
para328
ans328
}
// para 是参数
// one 代表第一个参数
type para328 struct {
one []int
}
// ans 是答案
// one 代表第一个答案
type ans328 struct {
one []int
}
func Test_Problem328(t *testing.T) {
qs := []question328{
question328{
para328{[]int{1, 4, 3, 2, 5, 2}},
ans328{[]int{1, 3, 5, 4, 2, 2}},
},
question328{
para328{[]int{1, 1, 2, 2, 3, 3, 3}},
ans328{[]int{1, 2, 3, 3, 1, 2, 3}},
},
question328{
para328{[]int{4, 3, 2, 5, 2}},
ans328{[]int{4, 2, 2, 3, 5}},
},
question328{
para328{[]int{1, 1, 1, 1, 1, 1}},
ans328{[]int{1, 1, 1, 1, 1, 1}},
},
question328{
para328{[]int{3, 1}},
ans328{[]int{3, 1}},
},
question328{
para328{[]int{1, 2, 3, 4, 5}},
ans328{[]int{1, 3, 5, 2, 4}},
},
question328{
para328{[]int{}},
ans328{[]int{}},
},
}
fmt.Printf("------------------------Leetcode Problem 328------------------------\n")
for _, q := range qs {
_, p := q.ans328, q.para328
fmt.Printf("【input】:%v 【output】:%v\n", p, L2s(oddEvenList(S2l(p.one))))
}
fmt.Printf("\n\n\n")
}

View File

@ -0,0 +1,30 @@
# [328. Odd Even Linked List](https://leetcode.com/problems/odd-even-linked-list/)
## 题目
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.
You should try to do it in place. The program should run in O(1) space complexity and O(nodes) time complexity.
Example 1:
```c
Input: 1->2->3->4->5->NULL
Output: 1->3->5->2->4->NULL
```
Example 2:
```c
Input: 2->1->3->5->6->4->7->NULL
Output: 2->3->6->7->1->5->4->NULL
```
Note:
- The relative order inside both the even and odd groups should remain as it was in the input.
- The first node is considered odd, the second node even and so on ...
## 题目大意
这道题和第 86 题非常类型。第 86 题是把排在某个点前面的小值放在一个链表中,排在某个点后端的大值放在另外一个链表中,最后 2 个链表首尾拼接一下就是答案。这道题思路也是一样的,分别把奇数和偶数都放在 2 个链表中,最后首尾拼接就是答案。