当前位置:网站首页>Leetcode divide and conquer / dichotomy
Leetcode divide and conquer / dichotomy
2022-07-05 06:13:00 【Dawnlighttt】
List of articles
q23 Merge k A sort list
Answer key
Use the idea of partition to solve , Merge sort . Because there is k A linked list , So traverse the linked list array , Then sort them one by one .
func mergeKLists(lists []*ListNode) *ListNode {
if len(lists) == 0 {
return nil
}
if len(lists) == 1 {
return lists[0]
}
var L *ListNode
L = mergeList(lists[0], lists[1])
for i := 2; i < len(lists); i++ {
L = mergeList(L, lists[i])
}
return L
}
func mergeList(L1, L2 *ListNode) *ListNode {
L := &ListNode{
}
curr := L
var next *ListNode
for L1 != nil && L2 != nil {
if L1.Val < L2.Val {
next = L1.Next
curr.Next = L1
L1.Next = nil
L1 = next
} else {
next = L2.Next
curr.Next = L2
L2.Next = nil
L2 = next
}
curr = curr.Next
}
if L1 != nil {
curr.Next = L1
}
if L2 != nil {
curr.Next = L2
}
return L.Next
}
q33 Search rotation sort array
Answer key
In this question , Arrays are not globally ordered , But partial order , But it can still be solved by dichotomy .
You can find that when we rotate the array , There must be a part of the array that is ordered , For example, in the example : The array becomes [4, 5, 6] and [7, 0, 1, 2] Two parts , And the left side of it [4, 5, 6] The array of this part is ordered .
So in the loop, we can check the mid Separate sides , Which side is orderly , And decide target Is it on the orderly side , If not on the orderly side , It must be on the other side . Through this idea, we finally get the answer .
func search(nums []int, target int) int {
n := len(nums)
if n == 0 {
return -1
}
if n == 1 {
if target == nums[0] {
return 0
} else {
return -1
}
}
l, r := 0, n - 1
for l <= r {
mid := (l + r) / 2
if nums[mid] == target {
return mid
}
// If the left side is in order
if nums[0] <= nums[mid] {
// If target Just in the left section
if nums[0] <= target && target < nums[mid] {
r = mid - 1
} else {
l = mid + 1
}
// If the right side is in order
} else {
// If target Just in the right section
if nums[mid] < target && target <= nums[n - 1] {
l = mid + 1
} else {
r = mid - 1
}
}
}
return -1
}
q34 Find the first and last positions of the elements in the sort array
Answer key
First use two points to find the value target The subscript midIndex, And then to midIndex Is the midpoint , Look left and right for target The left and right borders of .
func searchRange(nums []int, target int) []int {
l, r, midIndex, n := 0, len(nums) - 1, -1, len(nums)
for l <= r {
mid := (l + r) / 2
if nums[mid] == target {
midIndex = mid
break
}
if nums[mid] < target && target <= nums[n - 1] {
l = mid + 1
} else {
r = mid - 1
}
}
if midIndex == -1 {
return []int{
-1, -1}
}
start, end := 0, 0
for i := midIndex; i >= 0; i--{
if nums[i] == target {
start = i
} else {
break
}
}
for i := midIndex; i <= n - 1; i++{
if nums[i] == target {
end = i
} else {
break
}
}
return []int{
start, end}
}
边栏推荐
- liunx启动redis
- Implement a fixed capacity stack
- Multi screen computer screenshots will cut off multiple screens, not only the current screen
- Introduction et expérience de wazuh open source host Security Solution
- [rust notes] 16 input and output (Part 1)
- API related to TCP connection
- Navicat连接Oracle数据库报错ORA-28547或ORA-03135
- 927. Trisection simulation
- LeetCode 0107. Sequence traversal of binary tree II - another method
- WordPress switches the page, and the domain name changes back to the IP address
猜你喜欢

SQLMAP使用教程(二)实战技巧一

可变电阻器概述——结构、工作和不同应用

Individual game 12

Implement a fixed capacity stack

MySQL advanced part 1: index

Navicat连接Oracle数据库报错ORA-28547或ORA-03135

LeetCode 0108. Convert an ordered array into a binary search tree - the median of the array is the root, and the left and right of the median are the left and right subtrees respectively

Wazuh开源主机安全解决方案的简介与使用体验

LeetCode 0107. Sequence traversal of binary tree II - another method

7. Processing the input of multidimensional features
随机推荐
QQ computer version cancels escape character input expression
Spark中groupByKey() 和 reduceByKey() 和combineByKey()
Introduction et expérience de wazuh open source host Security Solution
On the characteristics of technology entrepreneurs from Dijkstra's Turing Award speech
Daily question 1688 Number of matches in the competition
Matrixdb V4.5.0 was launched with a new mars2 storage engine!
2022 pole technology communication arm virtual hardware accelerates the development of Internet of things software
中职网络安全技能竞赛——广西区赛中间件渗透测试教程文章
[rust notes] 15 string and text (Part 1)
SPI 详解
Arduino 控制的 RGB LED 无限镜
Dichotomy, discretization, etc
Is it impossible for lamda to wake up?
Full Permutation Code (recursive writing)
TypeScript 基础讲解
Leetcode-6108: decrypt messages
leetcode-556:下一个更大元素 III
Erreur de connexion Navicat à la base de données Oracle Ora - 28547 ou Ora - 03135
WordPress switches the page, and the domain name changes back to the IP address
Leetcode-31: next spread