算法-移除元素

算法-移除元素

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

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;
    }
}
相关推荐
代码无bug抓狂人12 小时前
C语言之可分解的正整数(蓝桥杯省B)
c语言·开发语言·算法
量子-Alex12 小时前
【大模型技术报告】Seed-Thinking-v1.5深度解读
人工智能·算法
Anastasiozzzz12 小时前
对抗大文件上传---分片加多重Hash判重
服务器·后端·算法·哈希算法
不染尘.12 小时前
二叉树相关题目
开发语言·数据结构·c++·算法
Imxyk13 小时前
力扣:632. 最小区间(贪心)
java·数据结构·算法
Mr_Xuhhh13 小时前
递归和迭代的区别(C/C++实现)
算法
历程里程碑13 小时前
21:重谈重定义理解一切皆“文件“及缓存区
linux·c语言·开发语言·数据结构·c++·算法·缓存
2501_9011478313 小时前
PyTorch DDP官方文档学习笔记(核心干货版)
pytorch·笔记·学习·算法·面试
Daydream.V13 小时前
决策树三中分类标准
算法·决策树·分类
闲人不梦卿13 小时前
数据结构之排序方法
数据结构·算法·排序算法