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

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

本期大纲

元素奇偶移动专题

描述 :

给你一个整数数组 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;
    }
} 

这期就到这里 , 下期见 !

相关推荐
逆向菜鸟6 分钟前
【摧毁比特币】椭圆曲线象限细分求k-陈墨仙
python·算法
DolphinDB13 分钟前
DolphinDB 回测插件快速上手
算法
利刃大大31 分钟前
【动态规划:路径问题】最小路径和 && 地下城游戏
算法·动态规划·cpp·路径问题
武大打工仔1 小时前
用 Java 复现哲学家就餐问题
算法
要做朋鱼燕1 小时前
【数据结构】用堆解决TOPK问题
数据结构·算法
秋难降2 小时前
LRU缓存算法(最近最少使用算法)——工业界缓存淘汰策略的 “默认选择”
数据结构·python·算法
CoovallyAIHub3 小时前
线性复杂度破局!Swin Transformer 移位窗口颠覆高分辨率视觉建模
深度学习·算法·计算机视觉
点云SLAM4 小时前
Eigen中Dense 模块简要介绍和实战应用示例(最小二乘拟合直线、协方差矩阵计算和稀疏求解等)
线性代数·算法·机器学习·矩阵·机器人/slam·密集矩阵与向量·eigen库
Jayyih4 小时前
嵌入式系统学习Day19(数据结构)
数据结构·学习