这是一个简单的问题。 a link 我只是尝试了简单的insertSorting-like方法来解决它,但它失败了。
public class Solution {
public void moveZeroes(int[] nums) {
for(int i = 0; i < nums.length; i++)
if(nums[i] == 0){
for(int j = i; j<nums.length-1; j++)
nums[j] = nums[j+1];
nums[nums.length-1] = 0;
}
}
}
有人可以帮我调试我的方法吗?
答案 0 :(得分:0)
所以我浏览了你的代码并重新编写了它。如果您将零移动到最后,这应该对您完全正常。干杯。
这段代码的作用是迭代你的数组,直到它达到零。点击零时,它会循环,将0向右移动一个地方一遍又一遍,用右边的值切换点,直到0移动到数组的末尾。
示例:5循环循环 [0,1,0,2,3]&gt; [1,0,0,2,3]&gt; [1,0,0,2,3]&gt; [1,0,2,0,3]&gt; [1,0,2,3,0]
int[] array = new int[] {0,1,0,12,3};
for (int x = 0; x < array.length; x++) {
if (array[x] == 0) {
for (int y = x; y < array.length; y++) {
if (y != array.length-1) {
// Store our replacement as temp
int temp = array[y+1];
// Move 0 to the right +1
array[y+1] = array[y];
// Set current position to what used to be right+1
array[y] = temp;
}
}
}
}
答案 1 :(得分:0)
我将分享leetcode中针对Move Zeroes问题的javascript解决方案。它的时间复杂度为O(n)。
const snowball1 = nums => {
let i = 0;
let j = 0;
while (i<nums.length) {
if(nums[i] != 0) {
nums[j] = nums[i];
j++;
}
i++;
}
console.log(j);
nums.fill(0, j);
return nums;
}
const snowball2 = nums => {
for(let i = nums.length; i--;){
if(nums[i]===0){
nums.splice(i,1)
nums.push(0);
}
}
return nums
}
console.log(snowball1([0,0,1,0,0,3,0,12,0]));
console.log(snowball2([0,1,0,3,12]));
答案 2 :(得分:0)
我将尝试编写一种非常直观,简单的方法来解决此问题。可以使用2个索引解决此问题,其中一个是读指针(rp),另一个是写指针(wp)。
如果rp读取值为0,则将wp设置为此索引。然后,rp继续递增,直到找到一个非零值。如果这样做,它将覆盖wp处的值,并且此过程将在开头填充非零值。
然后我们只需要用零填充剩余的点,直到最后。这是python中的一个简短解决方案:
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
wp=rp=0
while(rp<len(nums)):
if(nums[rp]!=0):
nums[wp]=nums[rp]
wp+=1
rp+=1
for i in range(wp,len(nums)):
nums[i]=0
答案 3 :(得分:0)
请在下面找到空间O(N)和时间O(1)的最优解
<!doctype html>
<title>Project</title>
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='styles/style.css') }}">
<div class=page>
<h1>My header</h1>
<table>
<th>
{% for i in cols %}
<td> {{i}} </td>
{% endfor %}
</th>
{% for k in range(data|length) %}
<tr>
<td> <a href="{{ url_for('static', filename='ids/' + data.iloc[k,0]|string) }}"> {{data.iloc[k,0]}} </a> </td>
{% for j in cols[1:] %}
<td> {{data.iloc[k][j]}} </td>
{% endfor %}
</tr>
{% endfor %}
</table>
</div>