type LinkNode struct {
Val int
Next *LinkNode
}
func TwoNumAdd(head1, head2 *LinkNode) *LinkNode {
newHead := &LinkNode{}
cur := newHead
add := 0
for head1 != nil && head2 != nil {
newVal := head1.Val + head2.Val + add
add = newVal / 10
cur.Next = &LinkNode{Val: newVal % 10}
head1 = head1.Next
head2 = head2.Next
cur = cur.Next
}
if head1 != nil {
cur = head1
}
if head2 != nil {
cur = head2
}
return newHead
}
func sort(nums []int) {
quickSort(nums, 0, len(nums)-1)
}
func quickSort(nums []int, low, high int) {
if low >= high {
return
}
pivot := partition(nums, low, high)
quickSort(nums, low, pivot-1)
quickSort(nums, pivot+1, high)
}
func partition(nums []int, low, high int) int {
pivot, left, right := nums[low], low+1,low+1
for right <= high {
if nums[right] > pivot {
right+=1
}else{
nums[left], nums[right] = nums[right], nums[left]
left+=1
right+=1
}
}
nums[pivot], nums[left] = nums[left], nums[pivot]
return left
}
1