golang力扣leetcode 75.颜色分类

简介: golang力扣leetcode 75.颜色分类

75.颜色分类

75.颜色分类

题解

题目:要求空间复杂度为O(1)

思路:

  1. 单指针
  2. 双指针
  3. 三指针

代码

func sortColors(nums []int) {
  cnt := swap(nums, 0)
  swap(nums[cnt:], 1)
}
func swap(nums []int, target int) int {
  cnt := 0
  for i := 0; i < len(nums); i++ {
    if nums[i] == target {
      nums[cnt], nums[i] = nums[i], nums[cnt]
      cnt++
    }
  }
  return cnt
}
func sortColors(nums []int) {
  p0, p2 := 0, len(nums)-1
  for i := 0; i <= p2; i++ {
    for i <= p2 && nums[i] == 2 {
      nums[i], nums[p2] = nums[p2], nums[i]
      p2--
    }
    if nums[i] == 0 {
      nums[i], nums[p0] = nums[p0], nums[i]
      p0++
    }
  }
}
func sortColors(nums []int) {
  a, b, c := 0, 0, 0
  for _, v := range nums {
    if v == 0 {
      nums[c] = 2
      nums[b] = 1
      nums[a] = 0
      c++
      b++
      a++
    } else if v == 1 {
      nums[c] = 2
      nums[b] = 1
      c++
      b++
    } else if v == 2 {
      nums[c] = 2
      c++
    }
  }
}
目录
相关文章
|
7天前
|
存储 算法
LeetCode刷题---75. 颜色分类(双指针,循环不变量)
LeetCode刷题---75. 颜色分类(双指针,循环不变量)
|
7天前
|
Java
【LeetCode力扣】面试题 17.14. 最小K个数(top-k问题)
【LeetCode力扣】面试题 17.14. 最小K个数(top-k问题)
14 1
|
1天前
|
机器学习/深度学习 canal NoSQL
从C语言到C++_12(string相关OJ题)(leetcode力扣)
从C语言到C++_12(string相关OJ题)(leetcode力扣)
7 0
|
7天前
|
存储 算法
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
6 0
|
7天前
|
Java
|
7天前
|
Go 容器 SQL
【Golang Leetcode】总目录(Day1~100)
【Golang Leetcode】总目录(Day1~100)
477 1
【Golang Leetcode】总目录(Day1~100)
|
7天前
|
Go 算法 Java
Golang每日一练(leetDay0025) 矩阵置零、搜索二维矩阵、颜色分类
Golang每日一练(leetDay0025) 矩阵置零、搜索二维矩阵、颜色分类
24 0
Golang每日一练(leetDay0025) 矩阵置零、搜索二维矩阵、颜色分类
|
7天前
leetcode-75:颜色分类
leetcode-75:颜色分类
27 0
|
7天前
|
Go
golang力扣leetcode 494.目标和
golang力扣leetcode 494.目标和
32 0
|
7天前
|
监控 算法 Go
Golang深入浅出之-Go语言中的服务熔断、降级与限流策略
【5月更文挑战第4天】本文探讨了分布式系统中保障稳定性的重要策略:服务熔断、降级和限流。服务熔断通过快速失败和暂停故障服务调用来保护系统;服务降级在压力大时提供有限功能以保持整体可用性;限流控制访问频率,防止过载。文中列举了常见问题、解决方案,并提供了Go语言实现示例。合理应用这些策略能增强系统韧性和可用性。
56 0