LeetcCode——剑指Offer21【调整数组使其奇数位于偶数前面】

简介: LeetcCode——剑指Offer21【调整数组使其奇数位于偶数前面】

目录

题目

解题思路

代码详解


题目

剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

题目概述:

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。

示例:

image.png

基础框架

class Solution{
    public int[] exchange(int[] nums){
    }
}

解题思路

利用双指针求解

代码详解

class Solution{
    public int[] exchange(int[] nums){
        int left=0,right=nums.length-1;
        while(left<right){        //当左右指针相遇时表示完成
            if(nums[left]%2!=0){
                left++;           //当左指针为奇数时,左指针向右边移动
            }else{
                swap(nums,left,right--);//将偶数放在右指针,右指针同时向左移动一位
            }
        }
        return nums;
    }
    public void swap(int[] nums,int left,int right){
        int temp=nums[left];
        nums[left]=nums[right];
        nums[right]=temp;
    }
}

image.png

暴力解法

//左右指针
class Solution{
    public int[] exchange(int[] nums){
        int[] arr =new int[nums.length];
        int left=0;
        int right=nums.length-1;
        for(int i=0;i<nums.length;i++){
            if(nums[i]%2==0){
                arr[right--]=nums[i];
            }else {
                arr[left++]=nums[i];
            }
        }
        return arr;
    }
}
//暴力破解,第一次for循环,放奇数,第二次for循环放偶数
class Solution {
    public int[] exchange(int[] nums) {
        int[] arr = new int[nums.length];
        int ans = 0;
        for(int i = 0;i < arr.length;i++){
            if(nums[i] % 2 != 0){
                arr[ans++] = nums[i];
            }
        }
        for(int i = 0;i < arr.length;i++){
            if(nums[i] % 2 == 0){
                arr[ans++] = nums[i];
            }
        }
        return arr;
    }
}


相关文章
|
8月前
|
人工智能 安全 开发者
2025 年 WordPress 本地部署工具深度测评:3 大高效实践方案解析
随着 WordPress 6.4 的普及,本地开发工具向智能化、场景化发展。个人开发者追求零配置启动,企业团队需标准化方案。技术演进聚焦容器化整合、AI 辅助决策与边缘计算适配。深度测评中,WordPress Studio 适合快速原型开发,Websoft9 面板适用于企业级管理,Bulk Plugin Installer 提升批量部署效率。2025 年行业趋势显示容器化、AI 辅助及边缘计算支持成为主流,选型应结合项目规模与安全需求。
301 0
|
关系型数据库 MySQL 数据库
DZ社区 mysql日志清理 Discuz! X3.5数据库可以做定期常规清理的表
很多站长在网站日常维护中忽略了比较重要的一个环节,就是对于数据库的清理工作,造成数据库使用量增加必须多的原因一般有2个:后台站点功能开启了家园,此功能现在很少有论坛会用到,但是灌水机会灌入大量垃圾信息致使站长长时间未能发觉;再有就是程序默认的一些通知类表单会存放大量的、对于网站日常运行并无意义的通知信息。
401 2
|
数据采集 人工智能 安全
CIO面临更快交付AI成果的压力
CIO面临更快交付AI成果的压力
|
域名解析 弹性计算 安全
使用阿里云服务器三分钟搭建网站(阿里云建站教程)
使用阿里云服务器三分钟搭建网站(阿里云建站教程)使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流程:
1037 0
函数+数组
c语言学习第四弹
|
XML JSON Java
Log4j2.xml 配置文件详解
Log4j2.xml 配置文件详解
3243 0
|
Python
Python每日一练(20230222)
Python每日一练(20230222)
131 0
|
人工智能 监控 安全
数智洞察 | 安全运输危险品,“红黄蓝三色码”背后的新管理思路
编者按: 过去10年,中国公路货运行业在市场规模迅速扩张的同时,安全风险也居高不下,成为困扰行业性发展的痛点。比起处理事故本身,如何预防类似事件的发生,是一个值得探讨的话题。
510 0
|
存储 安全 关系型数据库
阿里云DRDS备份策略方案
1. DRDS备份策略初衷 基于很多客户从云下迁移到上云(公共云or专有云)后,DRDS以及后端RDS都已经标准化成产品,默认会存在备份策略保障数据的安全,因此需要进行备份策略的整理,结合当前业务数据的实际情况,在保障数据安全的情况下,尽量节省支出来考虑备份策略; 2.
4981 0
阿里云DRDS备份策略方案
|
移动开发 Linux Windows
10.C语言(文件操作)
1.FILE*文件指针讲解 FILE所有平台得名字都一样,FILE是一个结构体类型,里面得成员功能一样,不同平台成员得名字不一样,这个结构体可以在stdio.
1322 0