算法-移除元素

算法-移除元素

下面的算法是跟着【代码随想录】学习的,数据结构是数据,算法是移除元素,这些是我的解法,如果有什么想法,欢迎大家留言与我讨论,谢谢。

1,LeetCode27

​ 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。

​ 假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。返回 k。

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

1234567891011

2,LeetCode26

​ 给你一个 非严格递增排列 的数组 nums ,请你**原地** 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k
ini 复制代码
class Solution {
    public int removeDuplicates(int[] nums) {
        int count = 0;
        for(int i = 0;i < nums.length;i++){
            if(nums[i] != nums[count]){
                nums[++count] = nums[i];
            }
        }
        return ++count;
    }
}

1234567891011

3,LeetCode283

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

ini 复制代码
class Solution {
    public void moveZeroes(int[] nums) {
        int count = 0;
        for(int i = 0;i < nums.length;i++){
            if(nums[i] != 0){
                nums[count++] = nums[i];
            }
        }
        for(int i = count;i < nums.length;i++){
            nums[i] = 0;
        }
    }
}

12345678910111213

4,LeetCode844

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。

**注意:**如果对空文本输入退格字符,文本继续为空。

scss 复制代码
class Solution {
    public boolean backspaceCompare(String s, String t) {
        String res1 = back(s);
        String res2 = back(t);
        return res1.equals(res2);
    }
    public static String back(String str){
        StringBuilder result = new StringBuilder();
        for(int i = 0;i < str.length();i++){
            char c = str.charAt(i);
            if(c == '#'){
            if(result.length() > 0){
                    result.deleteCharAt(result.length() - 1);
                }
            }else {
                result.append(c);
            }
        }
        return result.toString();
    }
}

123456789101112131415161718192021

5,LeetCode977

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

ini 复制代码
class Solution {
    public int[] sortedSquares(int[] nums) {
        int[] result = new int[nums.length];
        int left = 0;
        int right = nums.length - 1;
        int index = nums.length -1;
        while(left <= right){
            if(Math.abs(nums[left]) >= Math.abs(nums[right])){
                result[index--] = nums[left] * nums[left];
                left++;
            }else {
                result[index--] = nums[right] * nums[right];
                right--;
            }
        }
        return result;
    }
}
相关推荐
mjhcsp17 分钟前
Code date creation v8.0 竞赛数据生成与对拍实战指南
算法·ai·深度优先·cdc
小郎君65838 分钟前
keep-alive 页面怎么“真刷新”?别改外层 key——一个 refreshVersion 的完整实现
vue.js·算法
瑶池酒剑仙1 小时前
C++变量初始化五法完全指南:默认/拷贝/直接/列表/值初始化与窄化转换陷阱(青云之志)
c语言·开发语言·数据结构·c++·算法·visual studio
用户238003099451 小时前
从零开始实现扫雷游戏(C 语言控制台版)
算法
国科安芯1 小时前
星上计算的第一道防线:低轨遥感卫星载荷处理链中的AS32S601型抗辐射MCU—— 面向高分辨率成像与在轨智能处理的场景化综述
大数据·网络·人工智能·单片机·算法·低轨卫星·抗辐射
thusloop2 小时前
零门槛接入 GPT-6-astra 与 claude-opus-5-5,三大场景实战指南
python·gpt·算法·agent·claude·codex
瓦瓦gogo2 小时前
学回溯算法时,我先弄明白了怎么“退回来”
算法
Lzg_na2 小时前
堆和堆排序
算法
TK泰妞2 小时前
TikTok 带货视频如何做多语言本地化?从翻译脚本到重做场景的实用方法
算法·音视频
房开民2 小时前
DDPM 完整原理 + 全套公式串联
算法