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

文章目录

  • 【LeetCode】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
  • 一、双指针

一、双指针

解题思路:

考虑定义双指针 i,j 分列数组左右两端, 循环执行

  1. 指针 i 从左向右寻找偶数
  2. 指针 j 从右向左寻找奇数
  3. 将偶数 nums[i] 和奇数 nums[j] 交换

可始终保证:指针 i 左边都是奇数,指针 j 右边都是偶数

算法流程:

  1. 初始化:i,j 双指针,分别指向数组 nums 左右两端
  2. 循环交换:当 i = j 时跳出
    1. 指针 i 遇到奇数则执行 i = i + 1 跳过,直到找到偶数
    2. 指针 j 遇到偶数则执行 j = j - 1 跳过,直到找到奇数
    3. 交换 nums[i] 和 nums[j] 值
  3. 返回值:返回已修改的 nums 数组
class Solution {public int[] exchange(int[] nums) {int i = 0;int j = nums.length - 1;int temp = 0;while(i < j){while(i < j && (nums[i] & 1) == 1) i++;while(i < j && (nums[j] & 1) == 0) j--;temp = nums[i];nums[i] = nums[j];nums[j] = temp;}return nums;}
}
  • 时间复杂度 O(n),n 为数组 nums 长度,双指针 i,j 共同遍历整个数组
  • 空间复杂度 O(1),双指针 i,j 使用常数大小的额外空间

【LeetCode】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面相关推荐

  1. Leetcode 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 (每日一题 20210917)

    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分.示例:输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1 ...

  2. 《LeetCode力扣练习》剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 Java

    <LeetCode力扣练习>剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 Java 一.资源 题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组 ...

  3. 【双100%解法】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

    立志用最少的代码做最高效的表达 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 示例: 输入:nums = [1,2,3,4] 输 ...

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

    题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 知识点: 保证相对位置 ...

  5. 【算法】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

    文章目录 1.概述 2,双指针 1.概述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分. 示例: 输入:nums = [1,2,3,4 ...

  6. 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 (快速排序partion操作应用)

    借助一个额外的空间,空间复杂度O(N), 时间复杂度O(1) 快速排序partion操作,空间O(1),  不稳定 冒泡排序,O(n^2), 空间O(1) class Solution { publi ...

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

    剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 思路一:使用快慢双指针 1: i找偶数找到了,继续往下执行,找不到i++ 2:j找奇数,找到了继续往下执行,找不到j– 3:最后交换 clas ...

  8. 剑指Offer #13 调整数组顺序使奇数位于偶数前面 | 图文详解

    题目来源:牛客网-剑指Offer专题 题目地址:调整数组顺序使奇数位于偶数前面 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的 ...

  9. 《剑指offer》-- 调整数组顺序使奇数位于偶数前面、顺时针打印矩阵、数字在排序数组中出现的次数

    一.调整数组顺序使奇数位于偶数前面: 1.题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之 ...

最新文章

  1. ubuntu14.04 安装 bcm43142无线网卡
  2. 自学转行成前端工程师,三面拿下字节跳动offer
  3. 如何根据对象获取到对应的表名_Hands-on! 如何给 TiDB 添加新系统表
  4. wxPython--学习笔记
  5. 数据结构习题之线性表
  6. Q96:PT(1):方格纹理(Checker)(1)——3D Checker
  7. gstreamer插件开发_测评丨高性能多媒体处理器—飞凌OKMX8MM-C开发板
  8. Windows核心编程笔记
  9. 分享一个强大的工具,可以快速查看自己公司网站或竞争对手网站的CDN情况
  10. 深入分析Linux自旋锁
  11. 微信人格专业测试软件,如何在微信公众号中关联《九型人格测试专业版》小程序?...
  12. 现代优化算法 之 遗传算法
  13. 航天金税税控盘启动故障解决
  14. Android申请权限(相机权限和读写权限)
  15. 巴比特 | 元宇宙每日必读:数字藏品二级市场乱象丛生,00后成新韭菜,监管迫在眉睫?...
  16. 极限、可导、可微、连续之间的关系
  17. 蓝桥杯实验4--按键之独立键盘(proteus仿真)
  18. 易飞ERP进货单源码——复制报价单
  19. fooview辅助功能 shell_fooView — 安卓最强大的悬浮球应用
  20. 开放式办公环境真是个糟糕的做法

热门文章

  1. elasticsearch 报表统计_螺丝ERP销售管理系统,螺丝企业专业管理统计
  2. java的封装和this关键字知识整理
  3. VS2010+OpenMP的简单使用
  4. 不同网段的PC与交换机的原理
  5. 让用户研究插上数据的翅膀
  6. jquery常用技巧及常用方法列表
  7. js获取页面URL地址并判断URL是否包含具体值
  8. linux grub error 22,Linux系統grub常見錯誤問題解決
  9. 华为ensp的缺省_华为模拟器 eNSP安装教程
  10. string 释放_由String,String Builder,String Buffer 引起的面试惨案