吉林电商网站建设,网站不做301可以吗,兄弟们有没有没封的网站,创业网站建设怎么样题目:
给定一个数组 nums#xff0c;编写一个函数将所有 0 移动到数组的末尾#xff0c;同时保持非零元素的相对顺序。 请注意 #xff0c;必须在不复制数组的情况下原地对数组进行操作。
方法1:
快慢指针 快指针负责遍历数组中所有元素#xff0c;慢指针负责记录不为0的…题目:
给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾同时保持非零元素的相对顺序。 请注意 必须在不复制数组的情况下原地对数组进行操作。
方法1:
快慢指针 快指针负责遍历数组中所有元素慢指针负责记录不为0的元素,最后慢指针所在下标位置及其后边位置的元素置位0即可 public void moveZeroes1(int[] nums){ if (nums.length 0) { return; } int fast 0;int slow 0;while (fastnums.length){if(nums[fast]0){fast;}else {//目的是把不为0的元素移动到前边去nums[slow] nums[fast];slow;fast;}}for(int islow;inums.length;i){nums[i]0;}}方法2:
左右指针玩法 如果当前位置为0只移动右指针 如果当前位置不为0就把左右指针的数据交换左右指针再又移动这样左指针始终在非0位置的尾部 遇到0右指针移动快 不遇到0两个指针在一块差距就是0值的多少 public void moveZeroes2(int[] nums){ if(numsnull||nums.length0){ return; } int n nums.length;//左指针//右指针//右指针来到不为0的位置,就左右指针的位置交换,左指针来到非0位置的结尾。int left0,right0;while(rightn){if(nums[right]!0){int temp nums[left];nums[left] nums[right];nums[right] temp;left;}right;}}