当前位置:   article > 正文

【算法】删除一个数组中为0的元素_怎样判断数组的第一个元素的值是否为0

怎样判断数组的第一个元素的值是否为0

题目描述:

给定一个一维数组,将其中为0的元素删除掉,非零元素的相对位置保持不变,最终目标数组保留在原数组中,并且目标数组长度之外的元素全部置为0。

解题思路:

(1)数组非零元素往前移动,时间复杂度O(n)。

思路:先将非0的元素往前靠,最后再将剩下的位置重置为0。

实现代码:

  1. public void moveZeroes(int[] nums) {
  2. if(nums.length < 1)
  3. return ;
  4. int Index = 0;
  5. for (int i=0; i<nums.length; i++){
  6. if(0 != nums[i]){
  7. nums[Index++] = nums[i];
  8. }
  9. }
  10. for(int i=Index; i<nums.length; i++){
  11. nums[i] = 0;
  12. }
  13. }

 (2)利用两个指针,交换位置。时间复杂度O(n)。

思路:可以用两个指针,第一个指针永远指向从左往右为0的元素,第二个指针为遍历指针,当遍历指针指向的值为非0的时候,将这个元素与第一个指针指向的元素交换。

  1. public void moveZeroes(int[] nums) {
  2. //first指针永远指向当前为0的元素
  3. int first = 0;
  4. for (int second = 0; second < nums.length; second++) {
  5. //0的和非0的交换
  6. if (nums[second] != 0) {
  7. int temp = nums[first];
  8. nums[first] = nums[second];
  9. nums[second] = temp;
  10. first++;
  11. }
  12. }
  13. }

Reference:

【1】https://blog.csdn.net/Gpwner/article/details/77822761

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/784645
推荐阅读
相关标签
  

闽ICP备14008679号