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++
    }
  }
}
目录
相关文章
|
4月前
|
算法 搜索推荐
LeetCode第75题颜色分类
文章介绍了LeetCode第75题"颜色分类"的解法,通过双指针技术对数组中的0、1和2进行排序,避免了传统的排序算法,提供了一种时间复杂度为O(n)的高效解决方案。
LeetCode第75题颜色分类
|
2月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
2月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
90 0
|
2月前
力扣(LeetCode)数据结构练习题(2)
力扣(LeetCode)数据结构练习题(2)
31 0
|
2月前
|
存储
力扣(LeetCode)数据结构练习题
力扣(LeetCode)数据结构练习题
56 0
|
3月前
|
Go
Golang语言数据类型分类及进制转换案例
这篇文章详细介绍了Go语言中数据类型的分类、进制转换的概念和实例,以及数字字面量语法,还涉及了原码、反码和补码的相关知识。
24 0
Golang语言数据类型分类及进制转换案例
|
4月前
|
算法 Python
【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色
本文介绍了LeetCode 2038题的解法,题目要求在一个由'A'和'B'组成的字符串中,按照特定规则轮流删除颜色片段,判断Alice是否能够获胜,并提供了Python的实现代码。
58 3
|
3月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
136 4
Golang语言之管道channel快速入门篇
|
3月前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
71 4
Golang语言文件操作快速入门篇
|
3月前
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
111 3
Golang语言之gRPC程序设计示例