news 2026/6/4 4:52:25

LeetCode 75:颜色分类(荷兰国旗问题)—— Java 题解 ✅

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 75:颜色分类(荷兰国旗问题)—— Java 题解 ✅

LeetCode 75:颜色分类(荷兰国旗问题)—— Java 题解 ✅

🔗 题目链接

👉 https://leetcode.cn/problems/sort-colors/


📖 内容概要

给定一个只包含0、1、2的数组nums,要求原地排序,使得相同颜色相邻,并按0 → 1 → 2顺序排列。
本题本质是荷兰国旗问题(Dutch National Flag Problem),要求一次遍历、常数空间完成排序。


💡 解题思路(重点)

核心思想:三指针一次遍历

我们将数组划分为四个区间:

[0 ... l-1] → 全是 0 [l ... i-1] → 全是 1 [i ... r] → 未处理 [r+1 ... n-1] → 全是 2

三个指针含义

指针含义
l下一个放0的位置
r下一个放2的位置
i当前遍历指针

遍历规则(非常关键)

当遍历到nums[i]时:

✅ 情况 1:nums[i] == 0
  • 说明当前元素应该去左边
  • 交换nums[i]nums[l]
  • l++i++

👉为什么i++

  • 因为换过来的数一定是1(已处理过)

✅ 情况 2:nums[i] == 2
  • 说明当前元素应该去右边
  • 交换nums[i]nums[r]
  • r--
  • ⚠️ 不移动i

👉为什么i不动?

  • 换过来的数还没检查过(可能是 0 / 1 / 2)

✅ 情况 3:nums[i] == 1
  • 已经在正确位置
  • 直接i++

终止条件

while(i<=r)

i超过r,说明所有元素都已分区完成。


✅ AC 代码(Java)

classSolution{publicvoidsortColors(int[]nums){intl=0,r=nums.length-1;inti=0;while(i<=r){if(nums[i]==0){swap(nums,i,l);i++;l++;}elseif(nums[i]==2){swap(nums,i,r);r--;}else{i++;}}}privatevoidswap(int[]nums,inta,intb){inttmp=nums[a];nums[a]=nums[b];nums[b]=tmp;}}

⏱️ 复杂度分析

指标复杂度
时间复杂度O(n)(一次遍历)
空间复杂度O(1)(原地排序)

✅ 总结

  • 本题是经典的数组双指针 / 三指针问题
  • 核心在于理解指针不移动的原因
  • 是面试中高频出现的原地排序技巧

✅ 一次遍历
✅ 不使用额外空间
✅ 逻辑紧凑,代码优雅

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/4 4:52:23

对抗训练中的灾难性过拟合现象与LAP解决方案

1. 对抗训练中的灾难性过拟合现象解析在深度学习模型的对抗训练&#xff08;Adversarial Training, AT&#xff09;过程中&#xff0c;灾难性过拟合&#xff08;Catastrophic Overfitting, CO&#xff09;是一个令人困扰的现象。这种现象表现为模型在训练过程中突然失去对抗鲁棒…

作者头像 李华
网站建设 2026/6/4 4:49:55

告别阻塞延时!在FreeRTOS里优雅地采集ADS1115数据(STM32+CubeMX配置)

基于FreeRTOS的ADS1115多通道数据采集架构设计在嵌入式系统开发中&#xff0c;ADC数据采集往往面临实时性与效率的平衡难题。当STM32遇上FreeRTOS&#xff0c;如何让16位精度的ADS1115发挥最大效能&#xff1f;本文将分享一套经过实战检验的非阻塞式采集架构&#xff0c;解决传…

作者头像 李华
网站建设 2026/6/4 4:46:56

cspresnet50.ra_in1k实战:从零开始构建图像分类应用

cspresnet50.ra_in1k实战&#xff1a;从零开始构建图像分类应用 【免费下载链接】cspresnet50.ra_in1k 项目地址: https://ai.gitcode.com/hf_mirrors/NingBo_Ascend/cspresnet50.ra_in1k cspresnet50.ra_in1k是一款基于CSP-ResNet架构的图像分类模型&#xff0c;通过t…

作者头像 李华