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

文章目录

    • 一、删除元素
      • [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;
    }
}
相关推荐
Lois_Luo11 分钟前
Obsidian + Picgo + Aliyun OSS 实现笔记图片自动上传图床
笔记·oss·图床
追逐梦想的张小年19 分钟前
JUC编程04
java·idea
好家伙VCC22 分钟前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
(❁´◡`❁)Jimmy(❁´◡`❁)32 分钟前
Exgcd 学习笔记
笔记·学习·算法
傻小胖34 分钟前
21.ETH-权益证明-北大肖臻老师客堂笔记
笔记·区块链
YYuCChi1 小时前
代码随想录算法训练营第三十七天 | 52.携带研究材料(卡码网)、518.零钱兑换||、377.组合总和IV、57.爬楼梯(卡码网)
算法·动态规划
南极星10051 小时前
蓝桥杯JAVA--启蒙之路(十)class版本 模块
java·开发语言
消失的旧时光-19431 小时前
第十三课:权限系统如何设计?——RBAC 与 Spring Security 架构
java·架构·spring security·rbac
不能隔夜的咖喱1 小时前
牛客网刷题(2)
java·开发语言·算法
VT.馒头1 小时前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript