当前位置: 首页 > article >正文

算法通关村第三关-白银挑战双指针思想

大家好我是苏麟 , 今天带来算法第三关 .

本期大纲

    • 元素奇偶移动专题

元素奇偶移动专题

描述 :

给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。
返回满足此条件的 任一数组 作为答案。

题目 :

LeetCode 905. 按奇偶排序数组 :

按奇偶排序数组
在这里插入图片描述
分析 :

我们可以采用对撞型双指针的方法,图示中的对撞型基本一致,只不过比较的对象是奇数还是偶数。如下图所示:
在这里插入图片描述维护两个指针 left=0和 right=arr.ength-1,left从0开始逐个检查每个位置是否为偶数,如果是则跳过如果是奇数则停下来。然后right从右向左检查,如果是奇数则跳过偶数则停下来。然后交换array[left]和array[right]。之后再继续巡循环,直到left> =right。

解析 :

class Solution {
    public int[] sortArrayByParity(int[] nums) {
        int left = 0;
        int right = nums.length - 1;
        while(left < right){
            if((nums[left] % 2) > (nums[right] % 2)){
                int temp = nums[left];
                nums[left] = nums[right];
                nums[right] = temp;
            }
            if(nums[left] % 2 == 0){
                left++;
            }
            if(nums[right] % 2 > 0){
                right--;
            }
        }
        return nums;
    }
} 

这期就到这里 , 下期见 !


http://www.kler.cn/a/106702.html

相关文章:

  • jvm调优方式
  • element plus的表格内容自动滚动
  • 数据库的性能优化 -- SQL性能优化
  • CSS 响应式设计之媒体查询技术
  • 前端(3)——快速入门JaveScript
  • mysql每日一题(上升的温度,date数据的计算)
  • 操作系统缓冲区管理(单缓冲,双缓冲,循环缓冲,缓冲池)
  • SpringMVC(四)域对象共享数据
  • Django 全局配置 settings 详解
  • 730. 机器人跳跃问题--二分
  • 【报错】java.sql.SQLException: Invalid utf8mb3 character string: ‘ACED00‘
  • Fourier分析导论——第1章——Fourier分析的起源(E.M. Stein R. Shakarchi)
  • vue 使用openlayers导出渲染的地图
  • 在ffmpeg中,网络视频流h264为什么默认的转为YUV而不是其他格式
  • 工业4.0的安全挑战与解决方案
  • IDEA配置HTML和Thymeleaf热部署开发
  • yo!这里是进程间通信
  • Redis 的优势
  • mysql冷拷贝大表
  • (PyTorch)PyTorch中的常见运算(*、@、Mul、Matmul)
  • 如何使用SHC对Shell脚本进行封装和源码隐藏
  • 【C语言】memmove()函数(拷贝重叠内存块函数详解)
  • 基于ARM+FPGA+AD的多通道精密数据采集仪方案
  • 装饰者模式
  • R语言生物群落(生态)数据统计分析与绘图实践技术应用
  • 数组的最长递减子序列