算法通关村第三关——数组白银挑战笔记

文章目录

    • 一、删除元素
      • [1.1 原地移除所有值等于val的元素](#1.1 原地移除所有值等于val的元素)
      • [1.2 删除有序数组中的重复项](#1.2 删除有序数组中的重复项)
    • 二、元素奇偶移动

一、删除元素

1.1 原地移除所有值等于val的元素

LeetCode 27.移除元素
解法1:快慢指针

java 复制代码
class Solution {
    public int removeElement(int[] nums, int val) {
        int fast=0;
        int slow=0;
        for(; fast<nums.length; fast++){
            if(nums[fast]!=val){
                nums[slow] = nums[fast];
                slow++;
            }
        }
        return slow;
    }
}

解法2:双指针+覆盖

java 复制代码
class Solution {
    public int removeElement(int[] nums, int val) {
        int left=0;
        int right=nums.length-1;
        while(left<=right){
            if(nums[left]==val){
                nums[left] = nums[right--];
            }else{
                left++;
            }
        }
        return left;
    }
}

1.2 删除有序数组中的重复项

LeetCode 26.删除有序数组中的重复项

java 复制代码
class Solution {
    public int removeDuplicates(int[] nums) {
        int slow = 1;
        for(int fast=0;fast<nums.length;fast++){
            if(nums[slow-1]!=nums[fast]){
                nums[slow]=nums[fast];
                slow++;
            }
        } 
        return slow;
    }
}

二、元素奇偶移动

LeetCode 905.按奇偶排序数组

java 复制代码
class Solution {
    public int[] sortArrayByParity(int[] nums) {
        int left = 0;
        int right = nums.length - 1;
        while(left<right){
            if(nums[left]%2==0) left++;
            else{
                if(nums[right]%2==1) right--;
                else {
                    int tmp = nums[left];
                    nums[left] = nums[right];
                    nums[right] = tmp;
                }
            }
        }
        return nums;
    }
}
相关推荐
木井巳1 分钟前
【笔试强训】Day1
java·算法
风萧萧19992 分钟前
Milvus Java 快速入门
java·开发语言·milvus
leiming63 分钟前
巧用 FreeRTOS 任务通知作“邮箱”:NeoPixel 灯环控制实战
java·前端·算法
老四啊laosi3 分钟前
[双指针] 4. 力扣--盛最多水的容器
算法·leetcode·装水最多的容器
wanderist.5 分钟前
高维矩阵的压维存储和高维差分
c++·算法·蓝桥杯
东离与糖宝10 分钟前
Java 26 FFM API进阶:零JNI调用TensorRT/OpenVINO,AI端到端延迟砍半
java·人工智能
红云梦10 分钟前
互联网三高-高性能之线程池与连接池调优
java·线程池·连接池·池化技术
瑶山11 分钟前
SpringBoot + MongoDB 5分钟快速集成:从0到1实操指南
java·数据库·spring boot·后端·mongodb
迈巴赫车主13 分钟前
蓝桥杯192.等差数列java
java·数据结构·算法·职场和发展·蓝桥杯
chase。13 分钟前
【学习笔记】RoboForge:让文本指令“落地”到人形机器人——一个物理优化与隐式驱动的端到端框架
笔记·学习·机器人