算法-移除元素

算法-移除元素

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

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;
    }
}
相关推荐
渭雨轻尘_学习计算机ing5 分钟前
二叉树构建算法全解析
算法·程序员
C语言魔术师1 小时前
70. 爬楼梯
算法·动态规划
跳跳糖炒酸奶2 小时前
第二章、Isaaclab强化学习包装器(1)
人工智能·python·算法·ubuntu·机器人
许_安2 小时前
leetcode刷题日记——两数相加
算法·leetcode·职场和发展
夜晚中的人海2 小时前
【C语言】初阶算法相关习题(二)
c语言·开发语言·算法
PXM的算法星球2 小时前
【算法笔记】贪心算法
笔记·算法·贪心算法
傻欣2 小时前
代码随想录学习笔记---二叉树
笔记·学习·算法
WW_千谷山4_sch3 小时前
MYOJ_1349:(洛谷P3951)[NOIP 2017 提高组] 小凯的疑惑(数学公式套用,两步搞定代码)
c++·算法
我想进大厂3 小时前
图论---拓扑排序(DFS)
算法·深度优先·图论
泽02023 小时前
数据结构之排序
数据结构·算法·排序算法