Leetcode hot100_283.移动零

题目链接:283. 移动零 - 力扣(LeetCode)

暴力解法:

  感觉像用了冒泡排序呢)只是把比较大小的if语句变成了判断是否为0.

 1 class Solution {
 2     public void moveZeroes(int[] nums) {
 3         if(nums.length <= 1) return ;
 4         // 0 0 1 3 12
 5         for(int i = 0;i < nums.length;i++){
 6             for(int j = i+1;j < nums.length;j++){
 7                 if(nums[i]==0){
 8                     int temp = nums[i];
 9                     nums[i] = nums[j];
10                     nums[j] = temp;
11                 }
12             }
13         }
14     }
15 }

双指针:

第一个指针i从头开始遍历nums,第二个指针j指向0的位置。如果遍历到一个不为零的数就把这个数放到0的位置也就是j。

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

 

posted @ 2025-02-09 10:25  烟雨化飞龙  阅读(36)  评论(0)    收藏  举报