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 {
public void MoveTarget(int[] nums
, int target
) {
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
;
}
}
}
最后说两句
非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~
作者水平有限,如果文章内容有不准确的地方,请指正。
希望小伙伴们都能每天进步一点点。
声明
本文由二当家的白帽子博客原创,转载请注明来源,谢谢~