算法-移除元素

算法-移除元素

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

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

给定 st 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 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;
    }
}
相关推荐
敲代码的瓦龙35 分钟前
西邮移动应用开发实验室2025年二面题解
开发语言·c++·算法
RTC老炮43 分钟前
webrtc弱网-RembThrottler类源码分析及算法原理
网络·算法·webrtc
野蛮人6号1 小时前
力扣热题100道之73矩阵置零
算法·leetcode·矩阵
野蛮人6号1 小时前
力扣热题100道之238除自身以外数组的乘积
算法·leetcode·职场和发展
坚持编程的菜鸟1 小时前
LeetCode每日一题——缀点成线
c语言·算法·leetcode
派大星爱吃猫1 小时前
直接插入排序详解
算法·排序算法·直接插入排序
一只侯子2 小时前
Tuning——CC调试(适用高通)
开发语言·图像处理·笔记·学习·算法
csdn_aspnet2 小时前
直圆锥(Right Circular Cone)
算法·圆锥
JJJJ_iii2 小时前
【机器学习07】 激活函数精讲、Softmax多分类与优化器进阶
人工智能·笔记·python·算法·机器学习·分类·线性回归
天若有情6732 小时前
TFword:从字符到片段,解析一个“小而精”的字符串处理工具的设计智慧
java·jvm·算法