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

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

本期大纲

元素奇偶移动专题

描述 :

给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。

返回满足此条件的 任一数组 作为答案。

题目 :

LeetCode 905. 按奇偶排序数组 :

按奇偶排序数组

分析 :

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

解析 :

java 复制代码
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;
    }
} 

这期就到这里 , 下期见 !

相关推荐
蓝纹绿茶14 分钟前
【本机已实现】使用Mac部署Triton服务,使用perf_analyzer、model_analyzer
人工智能·算法·macos·机器学习
范纹杉想快点毕业40 分钟前
Qt实现文本编辑器光标高亮技术
java·开发语言·c++·算法·系统架构
C羊驼40 分钟前
C语言:二分搜索函数
算法
胡乱编胡乱赢41 分钟前
最小化联邦平均(FedAvg)的算法开销
算法·最小化联邦平均·联邦平均
The_cute_cat43 分钟前
25.6.19学习总结
学习·算法
এ᭄画画的北北1 小时前
力扣-45.跳跃游戏 ll
算法·leetcode
এ᭄画画的北北1 小时前
力扣-62.不同路径
算法·leetcode
zylyyyyyy1 小时前
Polar (极化)码的译码Ⅱ--BP 译码算法
数据结构·算法
shenyan~1 小时前
关于 RSA:RSA 加密算法过程
算法
liujing102329292 小时前
Day05_数据结构(二叉树&快速排序&插入排序&二分查找)
数据结构