Leetcode JAVA刷刷站(75)颜色分类

news2025/1/10 2:10:25

 一、题目概述

二、思路方向

       在Java中,要实现这个排序算法,我们可以使用三指针的方法,也称作荷兰国旗问题(Dutch National Flag Problem)。这个方法使用三个指针来分别追踪数组中小于、等于和大于中间值的元素的边界。在这个特定的问题中,中间值是1(代表白色),但我们实际上更关心的是将0(红色)放在前面,将2(蓝色)放在后面,而1(白色)则位于中间。

三、代码实现 

public class Solution {  
    public void sortColors(int[] nums) {  
        if (nums == null || nums.length <= 1) {  
            return;  
        }  
  
        int low = 0; // 小于中间值的指针  
        int mid = 0; // 当前遍历的指针  
        int high = nums.length - 1; // 大于中间值的指针  
  
        while (mid <= high) {  
            if (nums[mid] == 0) {  
                // 如果当前元素是0,则与low指向的元素交换,并将两个指针都向前移动  
                swap(nums, low, mid);  
                low++;  
                mid++;  
            } else if (nums[mid] == 1) {  
                // 如果当前元素是1,则只将mid指针向前移动  
                mid++;  
            } else { // nums[mid] == 2  
                // 如果当前元素是2,则与high指向的元素交换,但只将high指针向后移动  
                swap(nums, mid, high);  
                high--;  
            }  
        }  
    }  
  
    // 交换数组中两个位置的值  
    private void swap(int[] nums, int i, int j) {  
        int temp = nums[i];  
        nums[i] = nums[j];  
        nums[j] = temp;  
    }  
  
    public static void main(String[] args) {  
        Solution solution = new Solution();  
        int[] nums = {2, 0, 2, 1, 1, 0};  
        solution.sortColors(nums);  
        for (int num : nums) {  
            System.out.print(num + " ");  
        }  
    }  
}

执行结果:  

四、小结

       在这个代码中,low 指针用于追踪所有小于1(即0)的元素的边界,mid 指针用于遍历数组,high 指针用于追踪所有大于1(即2)的元素的边界。当mid指针遇到0时,它与low指针交换,并将两个指针都向前移动;当mid指针遇到1时,它只向前移动;当mid指针遇到2时,它与high指针交换,但只将high指针向后移动。这个过程一直持续到mid指针超过high指针为止,此时数组就被排序好了。

 结语 

谁勇敢地经受过青春之火的洗礼

谁就毫不惧怕晚年的严寒冰霜

!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2061470.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

未设置辅助手机的谷歌账号停用,申诉回来后登录需要手机验证,验证两次后成功恢复。

谷歌账号被停用后怎么办&#xff1f;果断申诉&#xff0c;申诉方法和模板等见我前面的文章或视频。 通常申诉以后1-2天会反馈结果&#xff0c;而且大部分&#xff08;80%以上&#xff09;会第一次就被审批通过&#xff0c;如下图所示&#xff1a; 当收到上面这样的邮件&#x…

OSError:[WinError -2146959355] 服务器运行失败

其实就是 找不到指定的程序&#xff0c;看报错&#xff0c;提示返回失败&#xff0c;最后通过设置wps由系统启动&#xff0c;解决报错 首先打开电脑&#xff0c;找到桌面上的【WPS文档】&#xff0c;右键&#xff0c;在打开的菜单中&#xff0c;选择【属性】选项 在弹出的属性…

GPT-4o: 引领多模态AI识别技术的革命【文末附GPT-4o教程】

GPT-4o简介 在人工智能技术的飞速发展中&#xff0c;图像识别已成为其核心能力之一。随着技术的不断演进&#xff0c;AI的图像处理能力已经从简单的内容识别&#xff0c;发展到能够将视觉信息转化为深入的文字描述。OpenAI最新发布的GPT-4o模型&#xff0c;正是这一进步的杰出…

AI + 3D 机器人视觉领域综合资源库

随着人工智能技术的不断发展,3D 机器人视觉领域已经成为了一个备受关注的研究方向。在这个领域中,研究者们致力于探索如何让机器人更好地理解三维空间,从而实现更加智能和灵活的操作。为了方便大家学习和研究,这里介绍一个全面的资源库——Awesome Robotics 3D,它汇集了最…

Bootstrap UI 编辑器

以下是 15 款最好的 Bootstrap 编辑器或者是在线编辑工具。 1. Bootstrap Magic 这是一个 Bootstrap 主题生成器&#xff0c;使用最新的 Bootstrap 3 版本和 Angular JS 版本&#xff0c;提供一个鲜活的用户修改预览。它包括了各种各样的导入&#xff0c;一个颜色选择器和智能…

写给大数据开发:在Databricks中自定义函数

你是否曾经在处理海量数据时感到力不从心?是否在重复编写相似代码时感到厌烦?如果是,那么Databricks中的自定义函数可能就是你一直在寻找的救星。在接下来的5分钟里,让我们一起探索如何利用这个强大的工具来revolutionize你的大数据开发工作流程。 目录 为什么要在Databrick…

kubernetes Pod 入门

一、Pod 的概念 kubernetes并不直接管理容器&#xff0c;它的最小管理单元是Pod。Pod是一个或多个容器的组合&#xff0c;这些容器贡献存储&#xff0c;网络&#xff0c;命名空间以及运行规范。在Pod中所有容器被统一安排和调度&#xff0c;在共享上下文中运行&#xff08;共享…

一款基于BS的美食网站的设计与实现

TOC springboot586一款基于BS的美食网站的设计与实现--论文 选题背景 由于互联网技术的快速发展&#xff0c;使得各部门都是以数字化、信息化、无纸化的发展趋势&#xff0c;随着趋势的发展&#xff0c;各种决策系统、辅助系统也应运而生&#xff0c;其中&#xff0c;美食网…

高性能Web服务器-- Nginx 的架构与安装详解

1.1 Nginx 概述 1.1.1 Nginx简介 Nginx&#xff1a;engine X &#xff0c;2002年开发&#xff0c;分为社区版和商业版(nginx plus ) 2019年3月11日 F5 Networks 6.7亿美元的价格收购 Nginx是免费的、开源的、高性能的HTTP和反向代理服务器、邮件代理服务器、以及TCP/UDP代理…

如何用CWE API 来减轻软件产品中的安全风险

本文分享自华为云开发者社区《用CWE API 减轻软件产品中的安全风险》作者&#xff1a; Uncle_Tom 1. CWE REST API 推出的目的 8 月 8 号&#xff0c;CWE™ 计划推出了“CWE REST API”。 CWE™计划由美国网络安全与基础设施安全局(Cybersecurity & Infrastructure Secur…

PyTorch——Dataloader使用

一、Dataloader是啥 前面我在写PyTorch的第一篇文章里讲过Dataset是啥&#xff0c;Dataset就是将数据集分类&#xff0c;并且分析出这些数据集它的位置哪、大小多少、这个数据集一共有多少数据......等等信息 那么把Dataset比作一副扑克牌&#xff0c;那么如果你就让这副牌放在…

《机器学习》 逻辑回归 大批量数据的下采样 <8>

一、案例文件 同样使用上节课的银行贷款案例&#xff0c;其文件内容大致如下&#xff1a;&#xff08;共28万多条&#xff0c;31列&#xff09; 现在要继续接着上节课的内容对模型进行优化 二、下采样流程 1、流程图示 2、具体流程介绍 1&#xff09;切分原数据集 大…

77、ansible及常见模块

ansible 一、ansible&#xff1a; 远程自动化运维 ansible是基于python开发的配置管理和应用部署工具。 也是自动化运维的重要工具。 可以批量配置&#xff0c;部署&#xff0c;管理上千台主机。 只需要在一台主机ansible就可以完成其他主机的操作。 1.1、操作模式&…

Dell 服务器 PowerEdge T440 通过BIOS配置RAID阵列

目录 1.清除当前RAID磁盘阵列配置 1.1开机按F2进入System Setup管理界面&#xff1b; 1.2点击Device Settings; 1.3选择RAID controller in Slot 4:DELL PERC Configuration Utility&#xff1b;卡型号> 1.4选择Configuration Management&#xff1b; 1.5选择View Dis…

Java 2.4 - JVM

一、Java 内存区域详解&#xff08;重点&#xff09; 本篇讨论的是 HotSpot 虚拟机 相比于 C 而言&#xff0c;程序员不需要对每个 new 操作都写对应的 delete / free 操作&#xff0c;这些操作我们会交给虚拟机去做。因此&#xff0c;如果不了解虚拟机的原理&#xff0c;一旦…

React 学习——React.memo

1、默认情况下&#xff1a;子跟着父一起渲染 2、memo 缓存,只有props发生变化的时候才会重新渲染 import { memo, useState } from react; // 默认情况下&#xff1a;子跟着父一起渲染 //memo 缓存,只有props发生变化的时候才会重新渲染 const MemoSon memo(function Son()…

Java使用Easy Excel对Excel进行操作

Easy Excel使用教程API&#xff1a; 读Excel | Easy Excel 官网 使用代码示例&#xff1a; 需要自行创建一个Maven项目&#xff0c;然后pom文件中需要的依赖如下&#xff1a; <dependencies><!-- easyExcel 表格依赖 --><dependency><groupId>com.a…

Qt实现tcp协议

void Widget::readyRead_slot() {//读取服务器发来的数据QByteArray msg socket->readAll();QString str QString::fromLocal8Bit(msg);QStringList list str.split(:);if(list.at(0) userName){QString str2;for (int i 1; i < list.count(); i) {str2 list.at(i);…

数据结构初阶(1)——算法的时间复杂度和空间复杂度

目录 1.算法效率 1.1 如何衡量一个算法的好坏 1.2算法的复杂度 2.时间复杂度 2.1时间复杂度的概念 2.2大O的渐进表示法 2.3常见时间复杂度计算举例 4. 常见复杂度对比 5.复杂度的oj练习 5.1消失的数字 5.2旋转数组 1.算法效率 1.1 如何衡量一个算法的好坏 代码不一…

探索数据结构:并查集的分析与实现

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 并查集的引入 1.1 并查集的概念 并查集是一种树型数据结构&#xf…