【精】LintCode领扣算法问题答案:1886. 目标移动

    科技2022-08-06  106

    1886. 目标移动

    描述

    给定一个数组 nums 以及一个整数 target 。 你需要把数组中等于target的元素移动到数组的最前面,并且其余的元素相对顺序不变。 你的所有移动操作都应该在原数组上面操作。

    数组的长度范围是: [1, 100000]如果数组中没有出现 target 则不需要对原数组进行修改。

    样例 1:

    输入: nums = [5, 1, 6, 1] target=1 输出: [1, 1, 5, 6] 解释: 1 是目标值,应该让所有的1在数组的最前面

    样例 2:

    输入: nums = [-1, 2, 3, 5, 2, 2] target = 2 输出: [2, 2, 2, -1, 3, 5] 解释: 2 是目标值,应该让所有的 2 都在数组的最前面

    样例 3:

    输入: nums = [2, 3, 4, 6] target = 1 输出: [2, 3, 4, 6] 解释: 数组中没有目标值,不需要改变原数组

    原题传送门


    文章目录

    1886. 目标移动描述样例 1:样例 2:样例 3: 题解最后说两句声明


    题解

    public class Solution { /** * @param nums: a list of integer * @param target: an integer * @return: nothing */ public void MoveTarget(int[] nums, int target) { // write your code here int count = 0; for (int i = nums.length - 1; i >= 0; i--) { if (nums[i] == target) { count++; } else { if (count > 0) { nums[i + count] = nums[i]; } } } for (int i = 0; i < count; i++) { nums[i] = target; } } }

    最后说两句

    非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~

    作者水平有限,如果文章内容有不准确的地方,请指正。

    希望小伙伴们都能每天进步一点点。

    声明

    本文由二当家的白帽子博客原创,转载请注明来源,谢谢~

    Processed: 0.010, SQL: 9