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++
    }
  }
}
目录
相关文章
|
2月前
|
算法 搜索推荐
LeetCode第75题颜色分类
文章介绍了LeetCode第75题"颜色分类"的解法,通过双指针技术对数组中的0、1和2进行排序,避免了传统的排序算法,提供了一种时间复杂度为O(n)的高效解决方案。
LeetCode第75题颜色分类
|
1月前
|
Go
Golang语言数据类型分类及进制转换案例
这篇文章详细介绍了Go语言中数据类型的分类、进制转换的概念和实例,以及数字字面量语法,还涉及了原码、反码和补码的相关知识。
13 0
Golang语言数据类型分类及进制转换案例
|
2月前
|
算法 Python
【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色
本文介绍了LeetCode 2038题的解法,题目要求在一个由'A'和'B'组成的字符串中,按照特定规则轮流删除颜色片段,判断Alice是否能够获胜,并提供了Python的实现代码。
40 3
|
2月前
|
Python
【Leetcode刷题Python】75. 颜色分类
在不使用sort函数的情况下对包含红色、白色和蓝色元素的数组进行排序的方法:插入排序法和单指针交换法,并提供了相应的Python实现代码。
12 0
|
4月前
|
算法
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
|
3月前
2670.找出不同元素数目差数组-力扣(LeetCode)
2670.找出不同元素数目差数组-力扣(LeetCode)
22 0
|
3月前
|
索引
821.字符的最短距离-力扣(LeetCode)
821.字符的最短距离-力扣(LeetCode)
23 0
|
4月前
|
算法
【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成
【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成
|
4月前
|
算法
【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏
【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏
|
4月前
|
算法
【经典LeetCode算法题目专栏分类】【第8期】滑动窗口:最小覆盖子串、字符串排列、找所有字母异位词、 最长无重复子串
【经典LeetCode算法题目专栏分类】【第8期】滑动窗口:最小覆盖子串、字符串排列、找所有字母异位词、 最长无重复子串
下一篇
无影云桌面